2010-04-20 13 views
5

Buduję mój program z flagą -pedantic, co powoduje błąd extra ';' (z powodu niezależnego nagłówka używającego kilku makr niekonsekwentnie, błąd jest niewyświetlane, gdy -pedantic jest wyłączone). Nie mam ochoty wyłączyć -pedantic i nie chcę edytować nagłówka. Czy istnieje jakiś sposób, aby ukryć ten dokładny błąd? Podobnie jak przełącznik kompilatora -Wno-annoying-semicolon-error czy coś takiego?Tłumienie "ekstra", "" błąd w GCC, gdy -pedantic jest na

+0

dlaczego chcesz użyć pedantyczny? patrząc na http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options wydaje się, że nie ma sposobu, aby zrobić to, co chcesz. z pewnością, jeśli użycie pedantycznego opiera się jedynie na odczuciu, to lepiej bez niego ;-) –

+0

Cóż, nie tylko uczucie :) Istnieje kilka silnych zaleceń, które muszę podążać za trudnym podążaniem –

+0

. Nie sądzę, aby nagłówek strony trzeciej był open source? Czy istnieje szansa na naprawienie? –

Odpowiedz

1

Obejście problemu polega na usunięciu -pedantic. Nic innego nie zadziała w tej sprawie.

+0

... lub naprawić błędny kod. Niestety. –

+0

@RomanD Czy dodatkowy średnik jest naprawdę "błędny"? –

+0

@ KyleStrand W rzeczywistości nie jest "błędny", ale nie do końca poprawny. Nie pamiętam, która biblioteka spowodowała mi ten problem cztery lata temu, ale istniała jakaś magia makro, która doprowadziła do tego problemu. –

2

Używając -isystem zamiast -I podczas przekazywania ścieżek dołączania, GCC nie będzie ostrzegać o nagłówkach systemu.

Dla dowolnych nagłówków, które utworzysz, po prostu je edytuj.

+0

Nie działa dla mnie. Zawiera bibliotekę z -systemem, ale ostrzeżenia są nadal zgłaszane dla linux-> cross-kompilatora jabłek, ale z pewnością działa na g ++ i clang – Flamefire

2

można stłumić pedantyczny ostrzeżenia dla nagłówków zewnętrznych, takich jak ten:

//save compiler switches 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wpedantic" 

//Bad headers with problem goes here 
#include <ros/ros.h> 
#include <sensor_msgs/LaserScan.h> 

//restore compiler switches 
#pragma GCC diagnostic pop 
Powiązane problemy