2009-07-03 9 views
36

W kompilatorach Microsoft, określone ostrzeżenia mogą być wyłączone z #pragma, bez wyłączania innych ostrzeżeń. Jest to niezwykle przydatna funkcja, jeśli kompilator ostrzega o czymś, co "trzeba zrobić".wyłączenie określonych ostrzeżeń w gcc

Czy GCC ma w tym momencie podobną funkcję? Wydaje się, że jest to dość oczywista cecha, że ​​jest niewyobrażalne, że nie ma jeszcze tej funkcji, ale starsze informacje w sieci sugerują, że ta funkcja nie istnieje.

Co można użyć w GCC?

W szczególności lubię używać wieloliterowych stałych, takich jak "abc". Te oceniają skutecznie jako podstawowy numer 256 - bardzo przydatna funkcja, ale wyzwala ostrzeżenie. Jest bardzo przydatny do włączania czterech ciągów znaków w instrukcji sprawy.

+3

duplikaty: http://stackoverflow.com/questions/487108/how-to-supress-specific-warnings-in-g http://stackoverflow.com/ pytania/925179/wybiórczo usuwające ostrzeżenie http://stackoverflow.com/questions/965093/selectively-disable-gcc-warnings-for-on--part-of-a-ranslations-unit –

Odpowiedz

33

Można to zrobić za pomocą gcc's diagnostic pragmas.

+0

To będzie użyteczne po aktualizacji do nowszego GCC. Wygląda na nowszą funkcję. –

24

Z gcc instrukcji:

Many options have long names starting with -f or with -W---for example, 
    -fforce-mem, -fstrength-reduce, -Wformat and so on. Most of these have 
    both positive and negative forms; the negative form of -ffoo would be 
    -fno-foo. This manual documents only one of these two forms, whichever 
    one is not the default. 

Ale jeśli pytasz, czy istnieje wyłączyć ostrzeżenie źródło poziomie, nie jestem świadomy, że jeśli funkcja istnieje w gcc.

11

-Wno-multichar:

Nie ostrzec jeśli stosuje się multicharacter stały ('FOOF'). Zazwyczaj wskazują one na literówkę w kodzie użytkownika, ponieważ mają wartości zdefiniowane przez implementację i nie powinny być używane w przenośnym kodzie .

More information.

7

Wewnątrz kodu źródłowego zapisu:

#pragma GCC diagnostic ignored "-Wno-multichar" 

// code with warnings but wont be displayed now... 
+0

Należy również pamiętać, że diagnostykę można ustawić dla małych fragmentów kodu za pomocą '#pragma GCC diagnostic push' oraz' #pragma GCC diagnostic pop'. – Hector