如何在C/C++中完成此功能

Mil*_*hen 7 c c++ macros

我需要一个宏来帮助输出给定参数的名称和值.它类似于以下代码.

#define AA "Hello"
#define BB "World"
#define PRINT(input_param) printf("input_param: %s\n", (input_param))
void main()
{
  PRINT(AA);
  PRINT(BB);
}
Run Code Online (Sandbox Code Playgroud)

我期待结果: AA: Hello\n BB: World\n

但显然不是.有人可以纠正我吗?谢谢.

Ben*_*son 12

您需要将宏名称字符串化#.这也是如此assert()有效:

#define AA "Hello"
#define BB "World"
#define PRINT(input_param) printf(#input_param ": %s\n", (input_param))
void main()
{
  PRINT(AA);
  PRINT(BB);
}
Run Code Online (Sandbox Code Playgroud)

如果我这样写它可能会更清楚:

#define PRINT(input_param) printf("%s: %s\n", #input_param, (input_param))
Run Code Online (Sandbox Code Playgroud)