【问题标题】:Hashtag symbol in C++ macro expression [duplicate]C ++宏表达式中的井号符号[重复]
【发布时间】:2020-05-15 05:02:49
【问题描述】:

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

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

【问题讨论】:

    标签: c++ macros c++14


    【解决方案1】:

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

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

    【讨论】:

    • 感谢@john 的良好解释和建议
    猜你喜欢
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2021-07-22
    • 1970-01-01
    • 2015-01-28
    相关资源
    最近更新 更多