boost::preprocess的神秘魔法的实现细节:BOOST

BOOST_PP_SEQ_SIZE还可以展示一下,BEGIN BOOST_PP_SEQ_FOLD_LEFT(SUB_S, 22, SEQ) == 10 END直接生产了2.6M的log过程。

# define SEQ (4)(1)(5)(2)

开始处理代码:BOOST_PP_SEQ_SIZE(SEQ)

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_SEQ_SIZE(SEQ) @@

//—————————————-

对实参SEQ进行展开

//—————————————-

开始处理代码:SEQ

//—————————————-

开始展开对象宏: @@@@ SEQ @@

//—————————————-

对象宏SEQ进行直接替换,结果为:(4)(1)(5)(2)

//—————————————-

开始处理代码:(4)(1)(5)(2)

//—————————————-

对代码(4)(1)(5)(2)

宏替换的最终结果为:(4)(1)(5)(2)

//—————————————-

对象宏SEQ展开的最终结果为:(4)(1)(5)(2)

//—————————————-

对代码SEQ宏替换的最终结果为:(4)(1)(5)(2)

//—————————————-

实参SEQ展开的最终结果:(4)(1)(5)(2)

//—————————————-

函数宏的调用BOOST_PP_SEQ_SIZE(SEQ)对宏体BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)

进行实参替换的结果为:BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))

//—————————————-

开始处理代码:BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)) @@

//—————————————-

对实参BOOST_PP_SEQ_SIZE_进行展开

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_

//—————————————-

对代码BOOST_PP_SEQ_SIZE_宏替换的最终结果为:BOOST_PP_SEQ_SIZE_

//—————————————-

实参BOOST_PP_SEQ_SIZE_展开的最终结果:BOOST_PP_SEQ_SIZE_

//—————————————-

对实参BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)进行展开

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_SEQ_SIZE_0 (4) @@ (1)(5)(2)

//—————————————-

函数宏的调用BOOST_PP_SEQ_SIZE_0(4)对宏体BOOST_PP_SEQ_SIZE_1

进行实参替换的结果为:BOOST_PP_SEQ_SIZE_1

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_1

//—————————————-

对代码BOOST_PP_SEQ_SIZE_1

宏替换的最终结果为:BOOST_PP_SEQ_SIZE_1

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_SEQ_SIZE_1(1) @@ (5)(2)

//—————————————-

函数宏的调用BOOST_PP_SEQ_SIZE_1(1)对宏体BOOST_PP_SEQ_SIZE_2

进行实参替换的结果为:BOOST_PP_SEQ_SIZE_2

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_2

//—————————————-

对代码BOOST_PP_SEQ_SIZE_2

宏替换的最终结果为:BOOST_PP_SEQ_SIZE_2

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_SEQ_SIZE_2(5) @@ (2)

//—————————————-

函数宏的调用BOOST_PP_SEQ_SIZE_2(5)对宏体BOOST_PP_SEQ_SIZE_3

进行实参替换的结果为:BOOST_PP_SEQ_SIZE_3

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_3

//—————————————-

对代码BOOST_PP_SEQ_SIZE_3

宏替换的最终结果为:BOOST_PP_SEQ_SIZE_3

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_SEQ_SIZE_3(2) @@

//—————————————-

函数宏的调用BOOST_PP_SEQ_SIZE_3(2)对宏体BOOST_PP_SEQ_SIZE_4

进行实参替换的结果为:BOOST_PP_SEQ_SIZE_4

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_4

//—————————————-

对代码BOOST_PP_SEQ_SIZE_4

宏替换的最终结果为:BOOST_PP_SEQ_SIZE_4

//—————————————-

对代码BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)宏替换的最终结果为: BOOST_PP_SEQ_SIZE_4

//—————————————-

实参BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2)展开的最终结果:BOOST_PP_SEQ_SIZE_4

//—————————————-

函数宏的调用BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))对宏体BOOST_PP_CAT_I(a, b)

进行实参替换的结果为:BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)

//—————————————-

开始处理代码:BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)

//—————————————-

开始展开函数宏: @@@@ BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4) @@

//—————————————-

函数宏的调用BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)对宏体a ## b

进行实参替换的结果为:BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4

//—————————————-

开始处理代码:BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4

//—————————————-

开始展开对象宏: @@@@ BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 @@

//—————————————-

对象宏BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4进行直接替换,,结果为:4

//—————————————-

开始处理代码:4

//—————————————-

对代码4

宏替换的最终结果为:4

//—————————————-

对象宏BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4展开的最终结果为:4

//—————————————-

对代码BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4

宏替换的最终结果为: 4

//—————————————-

函数宏的调用BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)展开的最终结果为:BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4

//—————————————-

对代码BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)

宏替换的最终结果为: 4

//—————————————-

函数宏的调用BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))展开的最终结果为:BOOST_PP_CAT_I(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_4)

//—————————————-

对代码BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))

宏替换的最终结果为: 4

//—————————————-

函数宏的调用BOOST_PP_SEQ_SIZE(SEQ)展开的最终结果为:BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 (4)(1)(5)(2))

//—————————————-

对代码BOOST_PP_SEQ_SIZE(SEQ)

宏替换的最终结果为: 4

一个人的天地是冷得连呼吸都会寂寞的颤栗,而麻烦,

boost::preprocess的神秘魔法的实现细节:BOOST

相关文章:

你感兴趣的文章:

标签云: