2010-10-18 60 views
6

我通常喜歡在Visual Studio中針對警告級別4編譯並將所有警告視爲錯誤。問題是,Ogre3D沒有編譯時出現警告級別3(FBX SDK或OIS,我也在使用它),並且這帶來了一個問題,因爲現在我有大量來自Ogre3D庫的警告,這些警告現在被視爲錯誤。到目前爲止,我一直在3級編譯,但這讓我非常不安。有什麼辦法可以禁用我無法控制的特定第三方庫的警告嗎?更改第三方庫的警告級別

回答

7

你不說你究竟是如何編制的,但這裏有一些選擇:

1 - Visual Studio內部的,您可以爲單個源文件的警告級別通過爲每個源文件

2的屬性 - 您也可以動態改變使用文件中的警告級別

#pragma warning(push, 3) 
// Some code, perhaps #includes 
#pragma warning(pop) 

它將警告等級設置爲兩個編譯指示之間的3。

+0

點數1正是我所期待的,謝謝! – Samaursa 2010-10-23 01:06:36

3

這可能是因爲如果您禁用了最知名的MSVC愚蠢警告,問題至少會成爲可管理的。

我的愚蠢警告抑制標題爲my blog;使用MSVC在警告級別4使用<windows.h>編譯代碼就足夠了,而且沒有任何警告。

除此之外,您可以採用「編譯器防火牆」的極端措施,這意味着將第三方庫的所有直接使用都放在實現文件或一組這樣的文件中。然後,您可以在低警告級別編譯這些文件。但我認爲這不值得。 。

乾杯&心連心,

+0

的抑制頭文件是非常非常有用的,謝謝! – Samaursa 2010-10-23 01:06:10

+1

你聲稱這很愚蠢,這讓我很痛苦。 – bobpaul 2011-03-01 06:01:32

+0

@bobpaul:據我所知,你的專業領域是Python,而不是C++。 – 2011-03-01 06:37:29

2

您可以將第三方的.h文件封裝到您自己的文件中,並在那裏禁用本地的違規警告,因爲您可能不想禁用所有警告,但只禁用特定的警告。

// include_file_wrapper.h 

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wuninitialized" 

#include "file.h" 

#pragma GCC diagnostic pop 

海合會這裏是如何可以做到這一點

http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas