c++ - C++ 宏表达式中的井号符号
问题描述
在下面的宏定义中,'#' 符号有什么作用?这里的语法(#x)是什么?
#define print(x) cout<<(#x)<<" : "<<x<<endl;
解决方案
#
是字符串化操作符。它将宏参数x
转换为字符串文字。
我看不出有多余的括号的理由,#define print(x) cout << #x <<" : " << x << endl;
也可以。更好的是#define print(x) cout << #x <<" : " << (x) << endl;
,因为第二次使用x
可能需要正确解析括号。
推荐阅读
- python-3.x - 尝试连接到 Google Cloud Run rpc 服务时出现 InactiveRpcError
- regex - 正则表达式查找文本中连续四个辅音的单词?
- ios - Ionic Cordova IOS Livereload 无法加载网页并出现错误:无法连接到服务器
- python - 中途拆分 PDF 页面并重新组合?
- html - 为什么我的 css 没有编辑我的 html 按钮高度?
- arrays - 带有集合数组的MongoDB 2集合
- elixir - 预加载和订购 has_many 时的不良行为:通过关联
- sql - 时间字段案例说明
- java - 解密未返回正确的明文
- java - Protobuf 生成的类中的 newBuilder() 是否会创建一个新的 Java 对象?