BOOST_PP_SEQ_FOR_EACH
Şu satırı dahil ederiz.
Şöyle yaparız
Şu satırı dahil ederiz.
Örnek
Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/preprocessor.hpp>
ÖrnekŞöyle yaparız
#define VARIANTS (char, unsigned char, short, unsigned short, int, unsigned int, float,
double)
#define MAKE_EXPORT(r, data, elem) template class __declspec(dllexport) Container<elem>;
BOOST_PP_SEQ_FOR_EACH(MAKE_EXPORT, _, BOOST_PP_TUPLE_TO_SEQ(VARIANTS))
BOOST_PP_SEQ_FOR_EACH_IŞu satırı dahil ederiz.
#include <boost/preprocessor/seq/for_each_i.hpp>
Macro + Data + Sequence alır.Örnek
Şöyle yaparız.
#include <boost/preprocessor/seq/elem.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>
#define types (int)(double)
#define funcs (AddInt)(AddDouble)
#define MACRO(_,funcs,i,type) \
void add(type val) { obj.BOOST_PP_SEQ_ELEM(i, funcs)(val); }
BOOST_PP_SEQ_FOR_EACH_I(MACRO, funcs, types)
Macro her sequence için bir kere çağrılır. Data için ise indeks ile çağrılır. Çıktı olarak şunu alırız.void add(int val) { obj.AddInt(val); }
void add(double val) { obj.AddDouble(val); }
Hiç yorum yok:
Yorum Gönder