我需要一个宏来帮助输出给定参数的名称和值。它类似于以下代码。
#define AA "Hello"
#define BB "World"
#define PRINT(input_param) printf("input_param: %s\n", (input_param))
void main()
{
PRINT(AA);
PRINT(BB);
}
我期待结果:AA: Hello\n BB: World\n
但显然不是。任何人都可以纠正我吗?谢谢。
您需要使用 对宏名称进行字符串化#
。这也是如何assert()
工作的:
#define AA "Hello"
#define BB "World"
#define PRINT(input_param) printf(#input_param ": %s\n", (input_param))
void main()
{
PRINT(AA);
PRINT(BB);
}
如果我这样写可能会更清楚:
#define PRINT(input_param) printf("%s: %s\n", #input_param, (input_param))