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

时间:2012-06-23 02:57:42

标签: 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);
}

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

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

1 个答案:

答案 0 :(得分: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);
}

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

#define PRINT(input_param) printf("%s: %s\n", #input_param, (input_param))