2012-06-07 12 views
12

Dołączam plik z biblioteki innej firmy, który wywołuje błąd, który może zostać obniżony do ostrzeżenia o numerze -fpermissive. Ale ponieważ nie chcę "zanieczyszczać" mojego dziennika kompilacji tymi ostrzeżeniami, chcę całkowicie wyłączyć te wiadomości.W gcc, jak wyciszyć ostrzeżenie -fpermisive?

Do tej pory ustawiam opcję -fpermissive z diagnostic pragma podczas dołączania pliku; coś takiego:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-fpermissive" 

#include <third-party-file.h> 

#pragma GCC diagnostic pop 

Ponieważ gcc zwykle zapewniają zarówno „pozytywne” i „negatywne” wersję -f flagami, myślałem o ignorowanie „no-wydaniem” cechę:

#pragma GCC diagnostic ignored "-fno-permissive" 
#include <third-party-file.h> 

Ale tam nie wydaje się być "negatywną" wersją flagi -fpermissive (używam gcc 4.6.3, ale nawet wersji 4.7.0 does not have it).

Czy mogę naśladować to zachowanie? Dzięki!

+1

Opcja '-fno-permissive' jest ustawieniem domyślnym. '-fprissive' i nic nie jest" negatywną "i" pozytywną "wersją flagi. Powiedział, że nie powinieneś tego używać. Napraw kod! Nawet jeśli nie jest twój. – rubenvb

+1

-no-permisywny nie jest domyślny, ponieważ opcja nie istnieje. Zachowanie, które miałoby, gdyby istniało, byłoby domyślne. Mogę naprawić kod, ale wydaje się bardziej jak obejście ... W każdym razie, naprawienie całego zestawu zawartych nagłówków nie jest tak naprawdę opcją. – piwi

+0

to dokładnie to, co miałem na myśli. '-fpermisive' jest tutaj hack/obejściem. O jakim kodzie mówimy mimo wszystko. Może jest lepsza alternatywa. – rubenvb

Odpowiedz

11

To może trochę późno, ale jeden z nich powinien zrobić to, czego chciał:

#pragma GCC diagnostic ignored "-fpermissive" 

lub

#pragma GCC diagnostic ignored "-pedantic" 

„ignorowane” jest jak squelch diagnostyczny całkowicie i odwrotność -fpermissive jest -pedantic, ze względów historycznych.

+1

Dziękuję za odpowiedź! Czy wiesz, gdzie mogę znaleźć wzmianki o "-pedantic" będącym przeciwieństwem '-fpermissive'? – piwi

+1

Niestety nie jest to jasno udokumentowane. Możesz przeczytać o '-fpermissive' tutaj: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/C_002b_002b-Dialect-Options.html#index-fpermissive-154 i' -pedantic' tutaj: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Warning-Options.html#index-pedantic-257 A jeśli czytasz między wierszami, możesz zrozumieć, że to, co się dzieje, to Kompilator C++ ma domyślny stan "-pedantic-errors". Ale nie mogę ci tego udowodnić bez wskazania prawdziwego kodu ... – zwol

+0

... i nie mają indeksu przekierowań online dla ich VCS, więc nie mogę znaleźć odpowiedniego fragmentu rzeczywistego kodu bez pobierania go wszystko i uruchamiamy pakiet 'grep's, którego nie mam czasu na dzisiejszy poranek. Przepraszam. – zwol

Powiązane problemy