用引号定义C ++预处理程序宏

时间:2018-12-12 05:04:07

标签: c++ macros preprocessor

我正在尝试在C ++中定义一个宏,该宏将引号放在变量周围。

我正在尝试做的一个简化示例是

#define PE(x) std::cout << "x" << std::endl;

,然后当我在代码中键入PE(hello)时,它应该打印hello;但它只会打印x

我知道,如果我成功了:

#define PE(x) std::cout << x << std::endl;

然后输入PE("hello")即可使用,但我希望能够不带引号而使用它。

这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用字符串化运算符#

#define PE(x) std::cout << #x << std::endl;

不过,我建议您从宏中删除分号。因此,

#define PE(x) std::cout << #x << std::endl
...
PE(hello);