2017-06-04 49 views
3

不能编译任何example 在Ubuntu 16.04精神X3:不能编译在Ubuntu 16.04任何例子

$ g++ -std=c++14 main.cpp 
In file included from /usr/include/boost/spirit/home/x3/nonterminal.hpp:14:0, 
       from /usr/include/boost/spirit/home/x3.hpp:20, 
       from main.cpp:23: 
main.cpp:226:9: error: ‘client::calculator_grammar::parse_rule’ declared as an ‘inline’ variable 
     BOOST_SPIRIT_DEFINE(
     ^
main.cpp:226:9: error: expected ‘)’ before ‘rule_’ 
     BOOST_SPIRIT_DEFINE(
     ^
main.cpp:226:9: error: expected primary-expression before ‘&’ token 
     BOOST_SPIRIT_DEFINE(
     ^
main.cpp:226:9: error: ‘first’ was not declared in this scope 
     BOOST_SPIRIT_DEFINE(
     ^

这是一种精神:: X3的错误?

回答

2

两个变化:

  1. 添加缺少的包括

    #include <boost/foreach.hpp> 
    
  2. 选择 “新风貌” 宏的用法:

    BOOST_SPIRIT_DEFINE(expression , term , factor); 
    

说实话,我没不知道p = p_def风格的启动化是可能的。我怀疑这是X3发布之前所需的语法。

+0

是的,[this](https://github.com/boostorg/spirit/blob/boost-1.64.0/example/x3/calc/calc5.cpp)是OP想要的例子([diff]( https://www.diffchecker.com/LZQmA4NQ))。 – llonesmiz

+0

@llonesmiz啊,显然。我从来没有检查过链接:) – sehe