Concatenation de chaine et retour a la ligne
Bonjour,
J'utilise une macro dans laquelle j'ai besoin de concatener des chaines, ce que je fais sans probleme avec le token ##. Mon soucis est que si j'insere le caractere : (ou :: ) dans ma macro, il m'insere un retour a la ligne avant ce caractere, ce qui fout la grouille :
Code:
1 2 3 4 5 6 7
|
#define MA_MACRO(type, explain) \
{ \
#type "_fmt", \
name_strings::##type##_fmt, \
"Specify the format of " explain \
} |
Mon soucis est au niveau de "name_strings::", qui donne la sortie suivante apres le passage du pre-processeur :
Appel :
Code:
MA_MACRO(client_stub, "client stub names");
Sortie du pre-processeur (gcc -E ......)
Citation:
{ "client_stub" "_fmt", name_strings
::client_stub_fmt
, "Specify the format of " "client stub names" }
Est-ce que quelqu'un saurait comment je peux faire pour ne pas qu'il insere un espace avant les :: ? Sachant que le probleme se produit avec n'importe quel signe de ponctuation...
Ce que je souhaite obtenir (et c'est ce que j'obtiens si je supprime les :: ) :
Citation:
{ "client_stub" "_fmt", name_strings::client_stub_fmt
, "Specify the format of " "client stub names" }
En esperant avoir ete clair, et en vous remerciant par avance