【问题标题】:define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p##(13), 13, 14) [closed]定义 BOOST_PP_NODE_13(p) BOOST_PP_IIF(p##(13), 13, 14) [关闭]
【发布时间】:2016-09-19 18:47:23
【问题描述】:

提升 auto_rec.hpp

这里的 p##(13) 是什么意思: 定义 BOOST_PP_NODE_13(p) BOOST_PP_IIF(p##(13), 13, 14)

翻译成什么?

【问题讨论】:

    标签: c++ boost macros


    【解决方案1】:

    '##' 预处理运算符用于进行连接。见Macros。 它的作用是从操作员双方获取令牌并生成一个令牌。

    这是一个经典的用法:

    #define foo(x, y) x ## y
    
    foo(aa, bb) // expands to 'aabb'
    

    在您的情况下,## 没有用,因为 p 和 (13) 不需要连接以扩展为有效表达式。 有趣的是,## 在最新版本的boost 中消失了。

    此外,clang 似乎不喜欢带括号的##,因为它试图将 'p(' 粘贴为自己的无效标记,这会导致编译器错误。

    【讨论】:

    • 是的。谢谢。我知道这一点。我确实以错误的方式问了一个问题。对不起。
    猜你喜欢
    • 2019-11-17
    • 2015-11-14
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2012-01-17
    • 2022-11-10
    • 2016-01-23
    • 2022-01-19
    相关资源
    最近更新 更多