2010-07-08 14 views
6

Me gusta compilar mi código con -Wall, y algunas veces incluso -pedante. Es en parte una cuestión de estilo, y en parte el hecho de que ocasionalmente emite advertencias muy, muy útiles (como usar = en lugar de ==).¿Hay alguna manera en que pueda hacer que g ++ solo emita advertencias relacionadas con mis archivos?

Sin embargo, los escritores de algunos de mis encabezados claramente no son tan rígidos. La compilación con cualquiera de los dos niveles de advertencia genera un enorme desorden de producción, lo que en primer lugar frustra por completo el objetivo de compilar de esa manera.

Entonces, ¿cómo puedo hacer que mi compilador ignore esas advertencias?

+7

Usted vencer esos tarados en la cabeza con un bate hasta que arreglen todo el advertencias en los encabezados, luego siempre use '-Wall -Wextra -pedantic'. –

+0

@NikolaiNFetissov También debe usar '-Werror', de esta forma no pueden compilarse si hay una advertencia. Eso significa que no deberían compartir el código con ni siquiera una advertencia ... –

Respuesta

8

Como alternativa a JS Bangs' answer, puede hacer que GCC tratarlos como system headers, que desactiva todas las advertencias (excepto #warning directivas) para las cabeceras.

Si el interruptor -isystem no es útil, se puede envolver todas las cabeceras ofensivas con las cabeceras más simples que contienen sólo la línea apropiada:

#pragma GCC system_header 
1

Utilice un #pragma apropiado para deshabilitar las advertencias antes de incluir los encabezados incorrectos, luego vuelva a habilitar las advertencias. Docs on the GCC pragmas.

0

Parece que son "tus" encabezados, lo que significa que puedes modificarlos tú mismo o dejar que los "escritores" lo hagan por ti. Si quieres buscar una vida libre de advertencia, arregla esos encabezados :).

alternativa, se puede, por supuesto, el uso de pragma, pero son anti-estilo y feo :)

7

Cuando se invoca GCC, utilizando -isystem en lugar de -I para dar las rutas de acceso a las cabeceras de problemáticas deben silenciar las advertencias para los encabezados. Consulte GCC docs o this SO question.

+0

¡Gracias! Esto solucionó mi problema. – Salgat

Cuestiones relacionadas