当前位置:  开发笔记 > 编程语言 > 正文

我如何处理Boost.Spirit生成的警告?

如何解决《我如何处理Boost.Spirit生成的警告?》经验,为你挑选了1个好方法。

我最近安装了boost,我正在尝试使用Spirit库.我编译了一个简单的例子,它解析了一个逗号分隔的数字列表并将它们加在一起.该程序已编译,但我的编译器(VS 2013)发出了大量的警告.看看来源:

#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 

namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
namespace phoenix = boost::phoenix;

using qi::double_;
using qi::_1;
using ascii::space;
using phoenix::ref;

template 
bool adder(Iterator first, Iterator last, double& n)
{
    bool r = qi::phrase_parse(first, last,

        //  Begin grammar
        (
            double_[ref(n) = _1] >> *(',' >> double_[ref(n) += _1])
        )
        ,
        //  End grammar

        space);

    if (first != last) // fail if we did not get a full match
        return false;
    return r;
}

int main()
{
    std::string str;
    std::getline(std::cin, str);
    double result;
    if (!adder(str.begin(), str.end(), result))
    {
        std::cout << "Invalid syntax." << std::endl;
    }
    std::cout << "The result is " << result << std::endl;
    return 0;
}

这产生了309行警告!他们看起来都像这样:

c:\boost\boost/spirit/home/support/terminal.hpp(264) : warning C4348: 'boost::spirit::terminal::result_helper' : redefinition of default parameter : parameter 3
        c:\boost\boost/spirit/home/support/terminal.hpp(270) : see declaration of 'boost::spirit::terminal::result_helper'
        c:\boost\boost/spirit/home/support/common_terminals.hpp(142) : see reference to class template instantiation 'boost::spirit::terminal' being compiled

该程序编译得很好,并做了我认为它会做的事情,但我想知道如何管理所有这些警告而不沉默有用的警告.有没有办法禁用源自boost的警告,但保留我的代码生成的警告?Spirit是一个相当受欢迎的图书馆,所以我知道有一些方法可以解决它.



1> ildjarn..:

使用VC++,您需要将Boost包含在几个pragma中:

#pragma warning(push)
#pragma warning(disable : 4348)
#include 
#include 
#include 
#pragma warning(pop)

#include 
#include 

// ...

disable根据需要添加到列表,空格分隔(docs).

其他编译器通常允许您将指定的包含路径标记为"系统"路径,并且抑制系统路径中标头的所有警告.特别是对于GCC和Clang,请使用-isystem而不是-I(docs).

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有