admin管理员组文章数量:1794759
BOOST
BOOST_PP_CAT宏主要用来连接两个标识符。此宏被其它地方用到。
定义此宏的头文件boost\preprocessor\cat.hpp
# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
# define BOOST_PP_CAT_II(p, res) res
为什么BOOST_PP_CAT宏要定义这么多辅助宏(BOOST_PP_CAT_I和BOOST_PP_CAT_II)呢?为什么不直接如下定义:
#define BOOST_PP_CAT_SIMPLE(a, b) a##b
原因是这两者之间是有细微的差别的。
请看下面的例子。
int AB = 512;
int A1 = 1024;
#define B 1
#define C1 BOOST_PP_CAT(A, B)
#define C2 BOOST_PP_CAT_SIMPLE(A, B)
这样定义以后,C1是A1,而C2是AB。也就是说:如果b不是宏,BOOST_PP_CAT和BOOST_PP_CAT_SIMPLE没有区别;如果b是宏,BOOST_PP_CAT_SIMPLE依然是直接连接,而BOOST_PP_CAT宏是先将b宏展开,然后连接。
本文标签: BOOST
版权声明:本文标题:BOOST 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1702531434a453131.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论