2010-04-20 11 views
5

Estoy construyendo mi programa con -pedantic indicador, lo que provoca un error extra ';' (debido a un encabezado de un tercero que utiliza unas pocas macros de forma inconsistente; no se muestra cuando -pedantic está desactivado). Realmente no tengo ganas de desactivar -pedantic, y tampoco quiero editar el encabezado. ¿Hay alguna forma de suprimir este error exacto? ¿Como un interruptor de compilador -Wno-annoying-semicolon-error o algo así?Suprimir el error "extra"; "en GCC cuando -pedantic está en

+0

¿Por qué desea utilizar pedante? mirando http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options parece que no hay forma de hacer lo que desea. seguramente si el uso de pedantic se basa simplemente en un sentimiento, estarás mejor sin él ;-) –

+0

Bueno, no solo sensación :) Hay algunas recomendaciones fuertes que tengo que seguir –

+0

Hmmm tramposo. No creo que el encabezado de terceros sea de código abierto. ¿Alguna posibilidad de arreglarlo? –

Respuesta

1

La solución alternativa es eliminar -pedantic. Nada más funcionará en ese caso.

+0

... o para arreglar el código del buggy. Ay. –

+0

@RomanD ¿Hay un punto y coma extra realmente "defectuoso"? –

+0

@KyleStrand No es realmente "con errores", pero tampoco del todo correcto. No recuerdo qué biblioteca me causó este problema hace cuatro años, pero hubo cierta magia macro que condujo a este problema. –

2

Use -isystem en lugar de -I al pasar rutas de acceso, entonces GCC no le advertirá sobre los encabezados del sistema.

Para cualquier encabezado que mantenga, simplemente edítelos.

+0

No funcionó para mí. Incluyó la biblioteca con el sistema, pero todavía se emitieron advertencias para el compilador cruzado de Linux-> apple, pero ciertamente funciona para g ++ y clang – Flamefire

2

Puede suprimir advertencias pedantes para las cabeceras externas como esta:

//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 
Cuestiones relacionadas