当前位置: 首页 > news >正文

企业网站的好处新葡京网址网站建设

企业网站的好处,新葡京网址网站建设,深圳网络营销运营,wordpress外链转內链简介 preprocessor是一些宏处理的库。在看signal2代码时,看在不支持c11变参数模板时,会使用到该库中的内容 signal2模板参数 在不支持变参模板时,使用该宏来定义模板参数 #define BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity) \typena…

简介

preprocessor是一些宏处理的库。在看signal2代码时,看在不支持c11变参数模板时,会使用到该库中的内容

signal2模板参数

在不支持变参模板时,使用该宏来定义模板参数

#define BOOST_SIGNALS2_SIGNATURE_TEMPLATE_DECL(arity) \typename R BOOST_PP_COMMA_IF(arity) \BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_INC(arity), typename T)

BOOST_PP_COMMA_IF:如果arity为非0,则是逗号,否则为空
BOOST_PP_INC:将arity加1
BOOST_PP_ENUM_SHIFTED_PARAMS:该宏有些复杂

BOOST_PP_ENUM_SHIFTED_PARAMS

#define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)

BOOST_PP_DEC_:如果count为0,保持不变,否则为count-1
BOOST_PP_REPEAT:其定义为

# define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))

BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4):宏变换为BOOST_PP_NODE_2(BOOST_PP_REPEAT_P)(BOOST_PP_REPEAT_P),因为BOOST_PP_NODE_2宏定义为

#define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)

其中p(2)BOOST_PP_REPEAT_P(2),宏BOOST_PP_REPEAT_P定义为

#define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))

所以BOOST_PP_REPEAT_P(2)

BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ 2(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))

其使用的宏有

# define BOOST_PP_REPEAT_2(c, m, d) BOOST_PP_REPEAT_2_I(c, m, d)
# define BOOST_PP_REPEAT_2_I(c, m, d) BOOST_PP_REPEAT_2_ ## c(m, d)
# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d)

所以BOOST_PP_REPEAT_ 2(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL)替换后为BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3(3,0,d),而BOOST_PP_TUPLE_EAT_3宏为

# define BOOST_PP_TUPLE_EAT_3(e0, e1, e2)

所以BOOST_PP_REPEAT_ 2(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL)最终替换后为BOOST_PP_NIL
所以BOOST_PP_REPEAT_P(2)最终替换为BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL,而
其定义为

# define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1

BOOST_PP_NODE_2(BOOST_PP_REPEAT_P)(BOOST_PP_REPEAT_P)替换为BOOST_PP_NODE_1(BOOST_PP_REPEAT_P)
由于

#define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2)

上面继续替换为BOOST_PP_IIF(BOOST_PP_REPEAT_P(1), 1, 2)
相关宏有

# define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
# define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)

BOOST_PP_NODE_1(BOOST_PP_REPEAT_P)替换为1
所以BOOST_PP_REPEAT宏替换后为BOOST_PP_REPEAT_1
则宏BOOST_PP_ENUM_SHIFTED_PARAMS替换后为

#define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT_1(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)

继续替换后为

#define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT_1_<count-1>(BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)

形式为

#define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_M(2, 0, param) BOOST_PP_ENUM_SHIFTED_PARAMS_M(2, 1, param) ....

相关宏为

# define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
http://www.dtcms.com/a/510853.html

相关文章:

  • 南通企业网站排名优化ppt网站建设
  • 网站建设风格有哪些wordpress删除中文
  • 象刀设计网站文网文网站建设
  • 沂源网站建设上海 网站建设 外包
  • 怎么样做移动油光文字网站太原市0元网站建设
  • 怎么做网站编程网站建设一条龙全包seo
  • 海报设计模板网站在线一键免费生成网页网站
  • PHP网站开发涉及的工具有哪些台州路桥区专业高端网站设计
  • 平邑网站制作如何做网站大管家
  • 网站改版建议app开发公司排名
  • 图书网站怎么做上海网站公
  • 杨浦集团网站建设网页设计作业主题
  • 网站js特效c2c电商网站有哪些
  • wordpress搭建网站有什么好外简述jsp网站开发的环境配置
  • 十大免费ppt模板免费下载网站网站开发前端就业前景
  • 网站建设黄页视频闭站保护期间网站能够打开吗
  • 大红门桥做网站微信公众号后天网站开发
  • 服装公司网站首页建设工程获奖查询网站
  • 高端网站设计公司名单网站审核备案表
  • 求网站建设的视频国内设计欣赏网站
  • 如何查询一个网站的空间大小金融网站 源码
  • 重庆自适应网站建设招聘网页制作人员
  • 在服务器网站上做跳转页面跳转网站关键词和描述
  • 包装网站建设网络推广员是干什么的
  • 有什么做调查的网站好住房和城乡建设部网站投诉电话
  • 郴州建设网站制作宁波定制网站建设解决方案
  • 网站首页布局自适应建筑学不会画画影响大吗
  • 汉服网站怎么做网站设计与制作说明
  • 农家乐网站建设营销方案网站建设版块分类
  • 学校网站模版网站建设及优化方案