c++ - 用引号定义 C++ 预处理器宏

标签 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") 然后它会工作,但我希望能够在没有引号的情况下使用它。

这可能吗?

最佳答案

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

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

不过,我建议您从宏中删除分号。所以,

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

关于c++ - 用引号定义 C++ 预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736383/

相关文章:

java - 在 C++ 中实例化派生类型

c++ - OpenCL - 无法修改值

具有重叠矩形的 C++ 碰撞检测

c++ - 尝试使 C++ (MFC) 代码片段易于重用。有什么选择?

c - 宏中的 GCC 变量类型

c - c 中条件编译#if 和#else(以及其他)的工作原理

javascript - Backbone 中的预处理模型

c++ - 检测 C++/Win32 中的进程崩溃

C++ 为什么我要使用#define 而不是内联?

macros - 如何更改 "-define"Erlang 属性(宏定义)的值?