2013-04-14 11 views
7

Nauczyłem się, że mogę umieścićGCC, C: Sprawdzanie nazwy domyślnych ostrzeżeń do stosowania w #pragma ignorowania

#pragma GCC diagnostic ignored "<warning>" 

do górnej części pliku źródłowego w celu stłumienia ostrzeżenia związane z tym konkretnym Plik źródłowy. Wydaje się jednak, że niektóre nazwy nie są wystarczająco szczegółowe. Na przykład,

#pragma GCC diagnostic ignored "-Wwrite-strings" 

nie przeszkadza gcc (4.7.2) z wyświetlania komunikatów ostrzegawczych, których nazwy nie są podane dokładne, zamiast, komunikaty te są przestrzegane jedynie przez [domyślnie włączona]. Sądzę, że muszę znać poprawne nazwy ostrzeżeń, aby móc ich używać w linii #pragma. Próbowałem już próbować, ale ostrzeżenia są nadal wyświetlane jako [domyślnie włączone].

Czy istnieje sposób na identyfikację tych ostrzeżeń lub na alternatywne wyłączenie ostrzeżeń związanych z określonym plikiem źródłowym?

Dziękuję bardzo!

+0

wierzę, że prawidłowe opcją jest '-Wno-write-strings' – Bechir

+0

Jeśli się nie mylę, jest to opcja kompilatora, który wyłącza wszystkie odpowiednie ostrzeżenia globalnie. Chciałem wyłączyć wyłączenie ostrzeżeń spowodowanych przez niektóre pliki źródłowe. Właśnie dlatego próbowałem podejścia '# pragma'. Ale i tak dziękuję! – Guybrush

Odpowiedz

2

Musisz naciskać i wywoływać stany diagnostyczne. Tak:

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunused-function" 
    /* ignoring warning */ 

    int unused_function(void) { 
     return 1337; 
    } 
#pragma GCC diagnostic pop 
+0

Tak więc umieściłem wszystkie funkcje mojego pliku źródłowego między pragmami, jak pokazano przez ciebie, z '-Wwrite-stringami'. Mimo to nie eliminuje ostrzeżeń pochodzących z tego pliku, które są oznaczone jako "włączone domyślnie". – Guybrush

+0

Czy możesz udostępnić więcej informacji o tym, jak wygląda linia poleceń gcc (np. -Wall, -pedantic, itp.)? Jakie są dokładne ostrzeżenia, które otrzymujesz? –

+0

Użyłem '-pedantic -Wall -Wshadow -Wpointer-arith -Wwrite-stringi'. Jeśli nic nie zrobię, otrzymam ostrzeżenia oznaczone jako '-Wshadow',' -Wunused-variable', '-Wimplicit-function-declaration' i' enabled default '. Umieszczając "#pragma GCC diagnostic igonred" "' na górze odpowiednich plików źródłowych, mogę pozbyć się pierwszych trzech typów ostrzeżeń, ale nie wiem jak sobie poradzić z 'włączonym domyślnie' ostrzeżenia pochodzące z tych plików źródłowych. – Guybrush

Powiązane problemy