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

3
我将尝试在C++中定义一个宏,用于给变量加上引号。
我所尝试的简化示例如下:
#define PE(x) std::cout << "x" << std::endl;

当我在代码中输入PE(hello)时,它应该打印hello,但实际上它只打印了x

我知道如果我将其改为:

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

然后输入PE("hello")就可以工作,但我希望能够在不使用引号的情况下使用它。

这个可能吗?

1个回答

2
你可以使用字符串化运算符#:
#define PE(x) std::cout << #x << std::endl;

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

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

谢谢!那正是我需要的。 - guskenny83
#define PE(BZL,YY) printf("错误 - " #BZL ": 结果: 0x%08x!", YY); 进行中:int variable1=1; PE(Test1,variable1); --> 打印结果: 错误 - Test1: 结果: 0x1! - Joniale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接