Boost Preprocessor: образец не работает
-
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 код, и я никогда не собирался использовать Boost PP, как это :-)
Решение
Ну, вы пытаетесь компилировать исходный файл, содержащий:
(a)(b)(c)(d)
Я полагаю, вы должны либо поместить это в контекст, где этот код имеет смысл или просто запустить препроцессор (без компиляции результата).
Не связан с StackOverflow