czy można przesadzić ze "static"?

0

Czy tworzenie w nagłówkach zmiennych typu "static" może być problematyczne ?
Konstruktor obiektu wykonuje sie przed main()

https://godbolt.org/z/r4rYTTsMv

chciałbym aby elektronik opisywał mi pamięć elektroniki w postaci ładnego kawałka H (teraz mam WEKSEL)

np. tak

#define HW_MEM(name,ce_N, offset, long_desc) \
  inline static Memory_desc_class name (#name,ce_N,offset,long_desc)


// opis obszarow pamieci !!! 
HW_MEM( memory1, 1  ,  0xFFAA , " opis obszau pamieci 1" ) ; 
HW_MEM( memory2, 2  ,  0xFFBB , " opis obszau pamieci 2" ) ; 
HW_MEM( memory3, 3  ,  0xFFCC , " opis obszau pamieci 3" ) ; 
HW_MEM( memory4, 4  ,  0xFFDD , " opis obszau pamieci 4" ) ; 
HW_MEM( memory5, 5  ,  0xFFEE , " opis obszau pamieci 5" ) ; 

zalety H vs XLS:
-- wersjonowanie i historia zmian per linia
-- konstruktor Memory_desc_class moze dodawać siebie do listy aby można było zrobić np. weryfikacje czy obszary pameici nie zachodzą na siebie itp.

Jak w makro dokleić coś do parametru ?
Bo tak jak napisałem to nie działa

 #define makro (name)  Type "PRE"_name;
 makro(var1)  ==>   Type PRE_var1; 
 makro(var2)  ==>   Type PRE_var2;
6

Czemu nie:

#include <iostream>
#include <vector>
using namespace std;

struct Memory_desc { int ce_N; size_t offset; const char *long_desc; };
const vector<Memory_desc> &Memory_desc_list()
{
	const static vector<Memory_desc> list
	{
		{1, 0xFFAA, "opis obszau pamieci 1"},
		{2, 0xFFBB, "opis obszau pamieci 2"}, 
		{3, 0xFFCC, "opis obszau pamieci 3"},
		{4, 0xFFDD, "opis obszau pamieci 4"},
		{5, 0xFFEE, "opis obszau pamieci 5"},
	};
	return list;
}

int main()
{
	for(auto const &mem:Memory_desc_list())
	{
		cout<<mem.ce_N<<" "<<mem.offset<<" "<<mem.long_desc<<endl;
	}
	return 0;
}
#define makros(type,name,val)  type var##name=val

int main()
{
	makros(int,1,11);
	makros(int,2,22);
	makros(int,3,33);
	cout<<var1<<endl;
	cout<<var2<<endl;
	cout<<var3<<endl;
0

Proste i piękne !
Dziękuje !

1 użytkowników online, w tym zalogowanych: 0, gości: 1