Bonjour à tous !
J'aurai une petite question vous vos esprits indue de connaissances, auquel je n'arrive pas a trouvez de réponse.
Dans un de mes programmes, j'ai un nombre considérable de classes à déclarer qui ont des tas de paramètres en commun. Du coup, je me suis dis que j'allais faire des macros pour me simplifier la vie.
L'idée de faire quelque chose dans le genre (en version simplifié ici) :
Et donc, pour récuperer la classe courante a chaque macro ADD_FUNCTION, je voulais définir le START_CLASS comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 START_CLASS(maclasse) ADD_FUNCTION(x) ADD_FUNCTION(y) ADD_FUNCTION(z) END_CLASS START_CLASS(maclasse2) ADD_FUNCTION(u) ADD_FUNCTION(v) ADD_FUNCTION(t) END_CLASS ect...
Pour pouvoir déclarer les ADD_FUNCTION comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #define START_CLASS(tclass) \ #if defined(CURRENT_CLASS) \ #undef CURRENT_CLASS \ #endif \ #define CURRENT_CLASS tclass
Mais j'ai donc un problème sur START_CLASS car visiblement il n'est pas possible de définir des macros imbriqué dans d'autres. Donc, je cherche a savoir si c'est possible quand même (peut-être en protègeant le caractère #, mais j'ai pas trouvé comment).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #define ADD_FUNCTION(fct) \ void CURRENT_CLASS::fct(...) { ... }
Merci beaucoup.
Snark.
Partager