2010-10-18 9 views
6

Ogólnie lubię kompilować się z poziomu ostrzegawczego 4 w Visual Studio i traktować wszystkie ostrzeżenia jako błędy. Problem polega na tym, że Ogre3D nie jest skompilowany z poziomem ostrzegawczym 3 (nie jest to także FBX SDK lub OIS, którego również używam) i stanowi to problem, ponieważ teraz mam mnóstwo ostrzeżeń z bibliotek Ogre3D, które są teraz traktowane jako błędy. Do tej pory kompilowałem na poziomie 3, ale to mnie bardzo niepokoi. Czy istnieje sposób wyłączenia ostrzeżeń dla określonych bibliotek stron trzecich, nad którymi nie mam kontroli?Zmiana poziomu ostrzeżenia dla woluminów innych firm

Odpowiedz

7

Nie powiedzieć dokładnie, jak jesteś kompilacji, ale oto kilka opcji:

1 - wewnątrz Visual Studio, można ustawić poziom ostrzegawczy dla poszczególnych plików źródłowych poprzez właściwości dla każdego pliku źródłowego

2 - można także zmienić poziom ostrzeżenia dynamicznie w pliku przy użyciu

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

, który ustawia poziom ostrzeżenia na 3 między dwoma pragma.

+0

Punkt numer 1 jest dokładnie tym, czego szukałem, dzięki! – Samaursa

3

Możliwe, że jeśli wyłączysz najbardziej znane głupie dźwięki MSVC, problem stanie się przynajmniej możliwy do opanowania.

Mój nagłówek tłumienia bezmyślnego jest dostępny pod adresem my blog; wystarczy skompilować kod przy użyciu <windows.h> na poziomie ostrzegawczym 4 z MSVC, bez ostrzeżeń.

Oprócz tego można przejść do skrajnej miary użycia "zapory ogniowej kompilatora", co oznacza bezpośrednie wykorzystanie biblioteki innej firmy w pliku implementacji lub zestawie takich plików. Następnie możesz skompilować te pliki z niskim poziomem ostrzeżenia. Ale nie sądzę, że warto. .

Cheers & HTH,

+0

Plik nagłówka tłumienie jest bardzo przydatna, dzięki! – Samaursa

+1

Boli mnie, że twierdzisz, że wiele z nich jest głupich. – bobpaul

+0

@bobpaul: O ile wiem, twój obszar specjalizacji to Python, a nie C++. –

2

Możesz zawinąć pliki .hs innej firmy do własnego pliku, a tam wyłączyć lokalne ostrzeżenia, ponieważ możesz nie chcieć wyłączyć wszystkich ostrzeżeń, ale tylko określonych.

// include_file_wrapper.h 

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

#include "file.h" 

#pragma GCC diagnostic pop 

Dla gcc oto jak można to zrobić

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

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

Powiązane problemy