【问题标题】:BUG on boost spirit?提升精神的BUG?
【发布时间】:2009-08-21 13:50:43
【问题描述】:

我正在尝试将我的代码从 VSC++ 6 迁移到 VSC++ 2008 速成版,并从英特尔编译器迁移到 Microsoft 编译器。除了我现在收到此错误之外,一切都很容易迁移:

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 ==========

谢谢 莱安德罗·利马

【问题讨论】:

  • 您是否看到“已弃用”警告消息?
  • 是的!但我改变了指示和任何不同的发生
  • 好的,您已经更改了代码,您现在可以将当前的错误消息添加到您的问题中吗
  • 就是这样...修复了已弃用部分的代码
  • 顶部的 DefaultScriptReader.cpp 中的内容(包含及以上内容)

标签: c++ visual-studio-2008 compiler-construction boost boost-spirit


【解决方案1】:

问题已解决,仅包括 phoenix1。老版本的凤凰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多