どこで詰まってるんやろ?と追試していると、どうやらマクロ展開する過程で、1回処理した直後に、規格通りかどうかのチェックが入っているからと推察する。
#include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/tuple/elem.hpp> #include <boost/preprocessor/seq/for_each.hpp> #include <boost/preprocessor/stringize.hpp> #define TYPE_LIST \ ((システム,1))\ ((x,2))\ ((y,4))\ ((z,3)) #define MACRO(r, data, elem) BOOST_PP_STRINGIZE(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,elem), _hoge_),BOOST_PP_TUPLE_ELEM(2,1,elem))) BOOST_PP_SEQ_FOR_EACH(MACRO, _, TYPE_LIST)
x.cpp:14:1: エラー: "�" と "_hoge_" を貼付けましたが正常な前処理トークンとなりません
UTF-8 が標準ならば…と、ちょっと考えてしまう一幕でした。
0 件のコメント:
コメントを投稿