我習慣於刪除我的代碼中報告的所有警告。如果可能的話,我只是喜歡乾淨的版本。我用爲什麼我會在#pragma上看到警告C4081?
#pragma comment(lib,"some.lib");
我得到這樣的警告:
警告c4081:預計 '換行';找到';'
我不確定爲什麼會產生警告。我可以幫助解除它嗎?
我習慣於刪除我的代碼中報告的所有警告。如果可能的話,我只是喜歡乾淨的版本。我用爲什麼我會在#pragma上看到警告C4081?
#pragma comment(lib,"some.lib");
我得到這樣的警告:
警告c4081:預計 '換行';找到';'
我不確定爲什麼會產生警告。我可以幫助解除它嗎?
它是行結尾的分號。它不需要#pragma
。
編輯:警告說這一切:預計在編譯結束的換行符,但發現一個分號代替。
使用VS2008測試
#pragma warning(disable: 4081)
將禁用該警告。但除非評論的語法錯誤,否則我不能重複警告。
#pragma comment(lib "some.lib")
給我警告4081,但
#pragma comment(lib, "some.lib")
沒有。
你的警告信息是什麼文字?
編輯:我現在看到,忘了添加#pragma警告,只是刪除;從評論欄末尾開始。這是一個語法錯誤。
可以有選擇,並暫時禁用所有的警告是這樣的:
#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)
這是一個非常可怕的解決方案。不喜歡你的錯誤,只是禁用它們。不要擔心他們的意思,如果你不瞭解他們,就把他們扔掉! 警告是有原因的。在他的情況下,他可能放錯了那個分號。在其他情況下,它可能是警告關於錯誤播報。隱藏錯誤並不意味着它對編譯器不是問題。 – 2010-02-23 21:16:11
@Daniel Goldberg:我並不是說總是隱藏你的警告。請不要暗示我的答案。我只是說,當你無法擺脫警告時,這是一種可能性,這不是你的錯。例如,也許你有提升頭文件,你不允許改變。 – 2010-02-23 21:18:16
+1,因爲當我使用boost時,我會這樣做。 – GManNickG 2010-02-23 22:07:50
您沒有提到的編譯器類型和版本,但我認爲你需要在第二個參數中沒有「.lib」的名稱(see here)
警告c4081:預計'換行';發現「;」這是我得到的警告之一。 – 2010-02-23 21:08:56
@ user245823:請將此添加到您的問題。 – quamrana 2010-02-23 21:10:51