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

use*_*608 3 c++ macros

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

#define APINAME abc
#define PRINTAPI(x) printf("x")
Run Code Online (Sandbox Code Playgroud)

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

mas*_*oud 6

宏是预处理器,在编译代码之前,它们将被其关联的语句替换。因此,您没有机会在运行时使用宏名称。但是,您可以在编译时生成字符串名称:

#define APINAME abc
#define PRINTAPI(x) std::cout << #x << std::endl;

int main()
{
    PRINTAPI(APINAME);
}
Run Code Online (Sandbox Code Playgroud)

输出量

APINAME
Run Code Online (Sandbox Code Playgroud)

在宏中,运算符#将输入参数设置为字符串文字(stringify)