[c++] 如何在C或C ++中打印宏名称



0 Answers

由于宏在预处理程序正在执行时会消失,而在编译器被调用之前会发生这种情况,所以APINAME将不会存在于源代码中供编译器处理的任何地方。 唯一的解决办法是以某种方式想出两者之间的某种联系,例如

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

有了宏,你可以做一个单线程:

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

APINAME_VAR(myvar, APINAME)

要么

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

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

或者,就你的宏而言:

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

将打印APINAME=abc

Question

如何在c或c ++中打印宏名称,例如:

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

我想打印PRINTAPI(APINAME)而不是“abc”






Related



Tags

c++ c++   macros