【发布时间】:2015-02-03 18:46:05
【问题描述】:
我希望编写一个宏来输出表达式的文本及其值,例如
int a = 2;
PRINT(a + 1);
应该输出
a + 1 = 3
C/C++ Macro string concatenation 显示了令牌连接的使用。然而,
#define PRINT(x) std::cout << x " = " << x << "\n"
或
#define PRINT(x) std::cout << (x) " = " << x << "\n"
给予
错误:预期为 ';'字符串常量之前
同时
#define PRINT(x) std::cout << x##" = " << x << "\n"
给予
错误:粘贴“1”和“”=“”没有给出有效的预处理令牌
请问,我怎样才能实现我的目标?谢谢!
【问题讨论】: