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/

相关文章:

c++ - KeyBoardEvents C++ 的数据结构

c++ - ObjC 中 & 的等价物是什么?

c++ - 函数 vs lambda 作为函数参数

c++ - 如何创建一个宏来获取类被编译成的库名称?

c - Linux内核补丁版本宏定义

go - 为多个库版本构建 Go 绑定(bind)?

c++ - 在版本控制中包含外部 C++ 库

iphone - Objective-C:在哪里定义随处可用的宏?

ios - Xcode 7.3 : "Ambiguous expansion of macro" when re-defining macro in prefix file

c - 有没有办法忽略C预处理器输出顶部的定义(行标记)?