为什么我会在#pragma上收到警告C4081?

时间:2010-02-23 20:59:46

标签: c++ visual-c++ warnings

我习惯删除代码中报告的所有警告。如果可能的话,我只是喜欢干净的身材。我用了

#pragma comment(lib,"some.lib");

我收到了这个警告:

  

警告c4081:预期'换行';找到';'

我不确定为什么会产生警告。我可以获得删除它的帮助吗?

4 个答案:

答案 0 :(得分:11)

它在行尾的分号。 #pragma不需要它。

编辑:警告说明了一切:在编译指示结束时预期换行,但发现了一个分号。

使用VS2008进行测试

答案 1 :(得分:3)

您可以选择性地暂时禁用所有警告:

#pragma warning(push, 0)        

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/exception.hpp>
#include <boost/filesystem/convenience.hpp>
#include <boost/program_options.hpp>
#include <boost/foreach.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/exception.hpp>
#include <boost/bind.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/device/back_inserter.hpp>

#pragma warning(pop)

您可以选择传递以下内容,而不是0:

#pragma warning( push )
#pragma warning( disable : 4081)
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop ) 

答案 2 :(得分:1)

#pragma warning(disable: 4081)

将禁用警告。但除非评论的语法错误,否则我无法重复警告。

#pragma comment(lib "some.lib") 

给我警告4081但是

#pragma comment(lib, "some.lib") 

没有。

您的警告信息的内容是什么?

编辑:我现在看到,忘记添加#pragma警告,只需删除;从评论行的末尾。这是一个语法错误。

答案 3 :(得分:0)

您没有提到编译器类型和版本,但我认为您需要在第二个参数(see here

中添加名称而不包含“.lib”