Boost препроцессор: образец не работает - PullRequest
2 голосов
/ 20 октября 2010

Я попытался скомпилировать пример из библиотеки 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 следующим образом: -)

1 Ответ

1 голос
/ 20 октября 2010

Итак, вы пытаетесь скомпилировать исходный файл, содержащий:

(a)(b)(c)(d)

Полагаю, вам следует либо поместить это в контекст, где этот код имеет смысл, либо просто запустить препроцессор (без компиляции результата).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...