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:
- ¿Cómo puedo hacer que una advertencia específica sea un error?
- ¿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.