2

ここで行き詰まりました...

#define CONCAT(a,b) BOOST_PP_STRINGIZE(BOOST_PP_CAT(a,b))
#define CONCAT1(a,b,c) CONCAT(CONCAT(a,b),c) and so on.

20個の引数があってもCONCATマクロを生成するにはどうすればよいですか? BOOST_PP_SEQ_FOR_EACHを使用できるかもしれませんが、その方法がわかりませんか?

4

2 に答える 2

2

ユースケースによって異なります。

これ

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

#define SEQ (a)(b)(c)

BOOST_PP_STRINGIZE(BOOST_PP_SEQ_CAT(SEQ)) // "abc"

シーケンスを連結してから文字列化します。"a" "b" "c"と同等のように、各引数を単純に文字列化することもできます"abc"

#define MY_STRINGIZE(r, data, elem) BOOST_PP_STRINGIZE(elem)
BOOST_PP_SEQ_FOR_EACH(MY_STRINGIZE, _, SEQ)
于 2012-07-20T09:23:47.630 に答える
1

すでに Boost ライブラリを使用しているので、試してみてくださいBOOST_PP_SEQ_CAT(ドキュメント)。要素のリストを取り、それらを単純に連結します。つまり、BOOST_PP_SEQ_CAT(a b c) 結果は になりabcます。

于 2012-07-20T09:12:29.423 に答える