boost学习之BOOST_PP_SEQ_FOR_EACH

用途:html

BOOST_PP_SEQ_FOR_EACH宏,用于将一个序列中参数依次按照指定宏进行展开。
spa

语法:code

BOOST_PP_SEQ_FOR_EACH(macro, data, seq)

变量:

macro
htm

一个以格式macro(rdataelem)定义的三元宏。该宏被BOOST_PP_SEQ_FOR_EACH按照seq中每一个元素进行展开。展开该宏,须要用到下一个BOOST_PP_FOR的重复项、备用数据data和当前元素。blog

data
ip

备用数据,用于传给macroget

seq
it

用于供macro按照哪一个序列进行展开io

用法:class

BOOST_PP_SEQ_FOR_EACH是一个重复项的宏。

若是序列是(a)(b)(c),则展开为:

macro(rdataamacro(rdatabmacro(rdatac)

若是要求更高效率,可以使用BOOST_PP_SEQ_FOR_EACH_R

头文件:

<boost/preprocessor/seq/for_each.hpp>

示例代码:

1.例1

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>

#define SEQ (w)(x)(y)(z)

#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)

BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ) // expands to w_ x_ y_ z_

2.例2

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>

#define SEQ (w)(x)(y)(z)

#define MACRO(r, data, elem) elem::GetInstance()

BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ) // expands to w::GetInstance() x::GetInstance() y::GetInstance() z::GetInstance()
相关文章
相关标签/搜索