0

我試圖將我的代碼從VSC++ 6遷移到VSC++ 2008 express版本,並且從英特爾編譯器遷移到Microsoft編譯器。一切都很容易遷移,但我現在收到此錯誤:提升精神的BUG?

1>------ Build started: Project: Base, Configuration: Debug Win32 ------ 
1>Compiling... 
1>DefaultScriptReader.cpp 
1>Warning: This header is deprecated. Please use: boost/spirit/include/classic.hpp 
1>Warning: This header is deprecated. Please use: boost/spirit/include/classic_dynamic.hpp 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(33) : error C2143: syntax error : missing ';' before '<' 
1>  c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(53) : see reference to class template instantiation 'boost::spirit::lazy_parser<ActorT>' being compiled 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(33) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(34) : error C2238: unexpected token(s) preceding ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(40) : error C2065: 'actor_result_t' : undeclared identifier 
1>  c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(42) : see reference to class template instantiation 'boost::spirit::lazy_parser<ActorT>::result<ScannerT>' being compiled 
1>Warning: This header is deprecated. Please use: boost/spirit/include/phoenix1.hpp 
1>Warning: This header is deprecated. Please use: boost/spirit/include/classic_grammar_def.hpp 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(104) : error C2039: 'nil_t' : is not a member of 'boost::phoenix' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(112) : error C2039: 'nil_t' : is not a member of 'boost::phoenix' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(180) : error C2143: syntax error : missing ';' before '<' 
1>  c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(299) : see reference to class template instantiation 'boost::spirit::grammar_def<T,T0,T1,T2,T3,T4,T5,T6,T7>' being compiled 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(180) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(187) : error C2238: unexpected token(s) preceding ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2143: syntax error : missing ';' before '<' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2238: unexpected token(s) preceding ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2988: unrecognizable template declaration/definition 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2059: syntax error : '<' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(297) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(298) : error C2760: syntax error : expected '{' not ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(299) : fatal error C1075: end of file found before the left brace '{' at 'c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(54)' was matched 
1>Build log was saved at "file://c:\Desenvolvimento\DFF\VC9\Base\Debug\BuildLog.htm" 
1>Base - 17 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

如何看到,MS編譯器在boost庫上顯示語法錯誤。 我在boost網站上發現該編譯器版本9與庫兼容。 那麼,我的代碼是怎麼回事?

與棄用部分的代碼固定:

1>------ Build started: Project: Base, Configuration: Debug Win32 ------ 
1>Compiling... 
1>DefaultScriptReader.cpp 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(33) : error C2143: syntax error : missing ';' before '<' 
1>  c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(53) : see reference to class template instantiation 'boost::spirit::classic::lazy_parser<ActorT>' being compiled 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(33) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(34) : error C2238: unexpected token(s) preceding ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(40) : error C2065: 'actor_result_t' : undeclared identifier 
1>  c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/dynamic/lazy.hpp(42) : see reference to class template instantiation 'boost::spirit::classic::lazy_parser<ActorT>::result<ScannerT>' being compiled 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(104) : error C2039: 'nil_t' : is not a member of 'boost::phoenix' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(112) : error C2039: 'nil_t' : is not a member of 'boost::phoenix' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(180) : error C2143: syntax error : missing ';' before '<' 
1>  c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(299) : see reference to class template instantiation 'boost::spirit::classic::grammar_def<T,T0,T1,T2,T3,T4,T5,T6,T7>' being compiled 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(180) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(187) : error C2238: unexpected token(s) preceding ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2143: syntax error : missing ';' before '<' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2238: unexpected token(s) preceding ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2988: unrecognizable template declaration/definition 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(277) : error C2059: syntax error : '<' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(297) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(298) : error C2760: syntax error : expected '{' not ';' 
1>c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(299) : fatal error C1075: end of file found before the left brace '{' at 'c:\Desenvolvimento\dff_dependencies_windows\include\boost/spirit/home/classic/utility/grammar_def.hpp(56)' was matched 
1>Build log was saved at "file://c:\Desenvolvimento\DFF\VC9\Base\Debug\BuildLog.htm" 
1>Base - 17 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

感謝 萊昂德羅利馬

+0

您是否看到「棄用的」警告消息? – 2009-08-21 13:55:28

+0

是啊!但我更改爲指示和任何不同的ocurrs – 2009-08-21 14:01:17

+0

好吧,所以你已經改變了你的代碼,你現在可以添加當前的錯誤信息到你的問題 – Glen 2009-08-21 14:11:19

回答

0

問題得到解決只是包括phoenix1。鳳凰的舊版本。