Ошибки компиляции в файлах повышения

Я получаю много ошибок при компиляции кода с использованием библиотек повышения, в основном, когда я использую пространство имен Spirit. Ошибки являются синтаксическими ошибками в файлах повышения, таких как:

boost/spirit/home/classic/dynamic/lazy.hpp(33): ошибка C2143: синтаксическая ошибка: отсутствует ';' до '<'

or

boost/spirit/home/classic/dynamic/lazy.hpp(33): ошибка C4430: отсутствует спецификатор типа — предполагается int. Примечание. C++ не поддерживает default-int.

or

boost/spirit/home/classic/utility/grammar_def.hpp(104): ошибка C2039: 'nil_t': не является членом 'boost::phoenix'

Я перехожу с Visual Studio 6 на Visual Studio 2008 Express и с одной из самых старых версий boost на самую последнюю.

Я хотел бы знать, в чем проблема. Я думаю, что проблема не может быть в библиотеке boost.


person Leandro Lima    schedule 14.08.2009    source источник
comment
Используете ли вы какие-либо #define в любом месте, которые могут повлиять на способ компиляции boost?   -  person Timo Geusch    schedule 14.08.2009


Ответы (2)


Мое предположение, как и у Тими Гойша, ошибочное #define.

Я никогда не использовал VS, но если есть возможность увидеть код после того, как он был пропущен через препроцессор, вы сможете понять, в чем причина проблемы.

person KeithB    schedule 14.08.2009
comment
Компилятор VS CL.exe имеет флаги /E и /P, которые генерируют обработанный вывод на стандартный вывод и в файл соответственно. - person jon-hanson; 15.08.2009
comment
Я действительно не знаю, какое определение может быть. Это большой код. Любая идея? - person Leandro Lima; 20.08.2009

Проблема решилась только включением phoenix1 старой версии феникса.

person Leandro Lima    schedule 07.09.2009