2010-02-23 149 views
3

我習慣於刪除我的代碼中報告的所有警告。如果可能的話,我只是喜歡乾淨的版本。我用爲什麼我會在#pragma上看到警告C4081?

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

我得到這樣的警告:

警告c4081:預計 '換行';找到';'

我不確定爲什麼會產生警告。我可以幫助解除它嗎?

回答

11

它是行結尾的分號。它不需要#pragma

編輯:警告說這一切:預計在編譯結束的換行符,但發現一個分號代替。

使用VS2008測試

1
#pragma warning(disable: 4081) 

將禁用該警告。但除非評論的語法錯誤,否則我不能重複警告。

#pragma comment(lib "some.lib") 

給我警告4081,但

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

沒有。

你的警告信息是什麼文字?

編輯:我現在看到,忘了添加#pragma警告,只是刪除;從評論欄末尾開始。這是一個語法錯誤。

+0

警告c4081:預計'換行';發現「;」這是我得到的警告之一。 – 2010-02-23 21:08:56

+0

@ user245823:請將此添加到您的問題。 – quamrana 2010-02-23 21:10:51

2

可以有選擇,並暫時禁用所有的警告是這樣的:

#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) 
+0

這是一個非常可怕的解決方案。不喜歡你的錯誤,只是禁用它們。不要擔心他們的意思,如果你不瞭解他們,就把他們扔掉! 警告是有原因的。在他的情況下,他可能放錯了那個分號。在其他情況下,它可能是警告關於錯誤播報。隱藏錯誤並不意味着它對編譯器不是問題。 – 2010-02-23 21:16:11

+4

@Daniel Goldberg:我並不是說總是隱藏你的警告。請不要暗示我的答案。我只是說,當你無法擺脫警告時,這是一種可能性,這不是你的錯。例如,也許你有提升頭文件,你不允許改變。 – 2010-02-23 21:18:16

+2

+1,因爲當我使用boost時,我會這樣做。 – GManNickG 2010-02-23 22:07:50

0

您沒有提到的編譯器類型和版本,但我認爲你需要在第二個參數中沒有「.lib」的名稱(see here

相關問題