首页 > 解决方案 > C++ 宏表达式中的井号符号

问题描述

在下面的宏定义中,'#' 符号有什么作用?这里的语法(#x)是什么?

#define print(x) cout<<(#x)<<" : "<<x<<endl;

标签: c++macrosc++14

解决方案


#是字符串化操作符。它将宏参数x转换为字符串文字。

我看不出有多余的括号的理由,#define print(x) cout << #x <<" : " << x << endl;也可以。更好的是#define print(x) cout << #x <<" : " << (x) << endl;,因为第二次使用x可能需要正确解析括号。


推荐阅读