[c++] Comment imprimer le nom de la macro en c ou c ++


Answers

Étant donné que les macros disparaissent lorsque le préprocesseur fonctionne, ce qui se produit avant l'appel du compilateur, l' APINAME n'existe nulle part dans le code source du compilateur. La seule solution est de trouver une sorte de connexion entre les deux d'une autre manière, par exemple

 struct foo{
    const char *name;
    const char *val;
 } myvar = { "APINAME", APINAME };

Avec une macro, vous pouvez le faire en un seul:

#define APINAME "abc"
#define APINAME_VAR(x, y) struct foo x = { #y, y }

APINAME_VAR(myvar, APINAME)

ou

 cout << "APINAME=" << APINAME << endl

 printf("APINAME=%s\n", APINAME);

Ou, dans le cas de votre macro:

 #define PRINTAPI printf("%s=%s\n", #APINAME, APINAME)

va imprimer APINAME=abc

Question

Comment imprimer le nom de la macro en c ou c ++, par exemple:

#define APINAME abc
#define PRINTAPI(x) printf("x")

Je veux imprimer PRINTAPI (APINAME) et non "abc"




Links



Tags

c++ c++   macros