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 c++ : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Sortie du pre-processeur (gcc -E ......)
Code : Sélectionner tout - Visualiser dans une fenêtre à part MA_MACRO(client_stub, "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...{ "client_stub" "_fmt", name_strings
::client_stub_fmt
, "Specify the format of " "client stub names" }
Ce que je souhaite obtenir (et c'est ce que j'obtiens si je supprime les :: ) :
En esperant avoir ete clair, et en vous remerciant par avance{ "client_stub" "_fmt", name_strings::client_stub_fmt
, "Specify the format of " "client stub names" }
Partager