0
爲什麼會出現這種失敗,編譯G ++ -c filename.cpp:升壓融合編譯失敗時的參數BOOST_FUSION_ADAPT_STRUCT數爲2
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/io.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/variant/variant.hpp>
#include <iostream>
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
namespace phoenix = boost::phoenix;
namespace lambda = boost::lambda;
using namespace std;
struct Intensity
{
int intensity_;
};
BOOST_FUSION_ADAPT_STRUCT(
Intensity,
(int, intensity_)
)
template <typename Iterator>
struct InternalParser : qi::grammar<Iterator, Intensity(), ascii::space_type>
{
InternalParser() : InternalParser::base_type(intensity)
{
intensity %= qi::int_;
}
qi::rule<Iterator, Intensity(), ascii::space_type> intensity;
};
typedef InternalParser<string::const_iterator> TheParser;
TheParser parser;
但是,如果我添加一個新的領域的結構強度它的工作原理:
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/io.hpp>
#include <boost/lambda/lambda.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
#include <boost/variant/variant.hpp>
#include <iostream>
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
namespace phoenix = boost::phoenix;
namespace lambda = boost::lambda;
using namespace std;
struct Intensity
{
int dummy_;
int intensity_;
};
BOOST_FUSION_ADAPT_STRUCT(
Intensity,
(int, dummy_)
(int, intensity_)
)
template <typename Iterator>
struct InternalParser : qi::grammar<Iterator, Intensity(), ascii::space_type>
{
InternalParser() : InternalParser::base_type(intensity)
{
intensity %= qi::int_ >> qi::int_;
}
qi::rule<Iterator, Intensity(), ascii::space_type> intensity;
};
typedef InternalParser<string::const_iterator> TheParser;
TheParser parser;
的克++版本: gcc版本4.4.6 20110731(紅帽4.4.6-3)(GCC)
升壓版本:1.41.0