gcc gcc-warning

Hacer una advertencia gcc un error?



gcc-warning (5)

Recibo esta advertencia de GCC:

advertencia: no puede pasar objetos de tipo no POD ''clase Something'' a ''...''; la llamada abortará en tiempo de ejecución

Es bastante mortal, especialmente porque llama un aborto. ¿Por qué no es esto un error? Me gustaría que sea un error, pero:

  1. ¿Cómo puedo hacer que una advertencia específica sea un error?
  2. ¿Qué advertencia es? De acuerdo con http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html , -Wno-invalid-offsetof parece a la bandera para ocultarlo, pero no lo hace

No estoy seguro de cuál es la advertencia correcta, pero una vez que la encuentre, puede cambiar su disposición con lo siguiente (usando ''formato'' como ejemplo):

#pragma GCC diagnostic error "-Wformat"

O como señala Straight:

gcc -Werror=format ...

Editar: Acabo de consultar la fuente de gcc para esto y esta advertencia específica no se puede desactivar a través de indicadores de línea de comando.


Parece que hay un montón de otras advertencias que no quiere que se conviertan en errores (usando el indicador de error). En general, es una buena práctica corregir todas las advertencias. Usar -Werror fuerza esto.


Puede usar el -Werror compiler para convertir todas o algunas advertencias en errores.


-Werror=specific-warning convertirá la especificada -Wspecific-warning en un error en GCC 4.3.xo posterior. En 4.1.2, solo funciona -Werror-implicit-function-declaration . Tenga en cuenta el guión en lugar del signo igual: funciona solo para ese caso específico y no para otros. Esta es una de las advertencias comunes más serias y definitivamente es útil convertirla en un error.

Aparte de eso, las versiones anteriores de GCC solo parecen proporcionar el mazo -Werror de hacer que cada advertencia sea un error.


Puede usar -fdiagnostics-show-option para ver la opción -W que se aplica a una advertencia particular.

Desafortunadamente, en este caso no hay una opción específica que cubra esa advertencia.

Parece que habrá un mejor soporte para esto en gcc-4.5.