ブーストプリプロセッサ:サンプルが機能していません
-
09-10-2019 - |
質問
からサンプルをコンパイルしようとしました boost.preprocessor 図書館:
#include <boost/preprocessor/seq/insert.hpp>
#define SEQ (a)(b)(d)
BOOST_PP_SEQ_INSERT(SEQ, 2, c) // expands to (a)(b)(c)(d)
Visual Studio 2008では、エラーが発生します error C2065: 'b' : undeclared identifier
サンプルに問題はありますか、それとも何かが足りませんか?
注:シーケンス定義自体は大丈夫です。これを表示するために、このコードをコンパイルしました。
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
#define SEQ (w)(x)
#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
struct w_
{
int x;
};
void test()
{
BOOST_PP_SEQ_FOR_EACH(MACRO, _, SEQ);
x_.x = 3;
}
免責事項:このコードはWTFコードであり、私はこのようなPPをブーストするつもりはありませんでした:-)
解決
さて、あなたは以下を含むソースファイルをコンパイルしようとしています:
(a)(b)(c)(d)
このコードが理にかなっているコンテキストにこれを配置するか、プリプロセッサを実行するだけで(結果をコンパイルせずに)実行する必要があると思います。
所属していません StackOverflow