Bon j'ai reussi a faire cette */@#$%* de concatenation
Pour reutiliser une variable definie dans un makefile dans son code. Par exemple:
TOTO=toto
On doit ajouter a sa ligne de compilation l'option -DNOM_DE_SON_CHOIX=$(TOTO)
Une fois dans le code, l'utilisation de la variable NOM_DE_SON_CHOIX telle quelle suffira a obtenir le contenu de TOTO.
Ensuite, si on veut concatener le contenu de toto a une autre "chaine", on definit une macro comme ceci:
Code :
- #define CONC(a,b) a##b
- #define CONC2(a,b) CONC(a,b)
- #define MY_NAMESPACE CONC2(namebase,NOM_DE_SON_CHOIX)
|
En effet, il faut redefinir 2 fois la concatenation, car on veut expander une macro (c'est encore un peu obscure pour moi ). Si on ne definit qu'une fois la concatenation comme ceci:
Code :
- #define CONC(a,b) a##b
- #define MY_NAMESPACE CONC(namebase,NOM_DE_SON_CHOIX)
|
Et bien le resultat sera toujours namebaseNOM_DE_SON_CHOIX en "dur", ce n'est donc pas ce qu'on veut
Pour avoir un namespace qui est le resultat de la concatenation, il suffit alors de faire
Code :
- namespace MY_NAMESPACE
- {
- ...
- }
|
Voila, en esperant que ca ne servira pas qu'a moi, car c'est tres pratique les namespaces dynamiques dans certains cas