medicina - gcc plotter
-Wextra ¿qué tan útil es realmente? (3)
Estoy leyendo el manual de gcc en este momento, especialmente la parte sobre las banderas de advertencia / error. Después de leer la parte sobre la bandera -Wextra, me pregunto si es útil en absoluto. Parece que se queja de cosas que parecen ser más bien subjetivas o una cuestión de gustos. No tengo mucha experiencia con gcc, solo lo uso de vez en cuando para algunos proyectos pequeños en la universidad, así que para todos los experimentados en C / C ++ (o para cualquier idioma que uses gcc), ¿cuál es el problema con -Wextra?
Consulte http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html .
Por lo tanto, no solo es útil para la comparación ''siempre verdadera'' (-Wsign-compare) sino también para identificar otros problemas de compilación. Lo encuentro útil a menudo.
Por lo general, agrego -Wno-unused-parameter
-Wno-sign-compare
y -Wno-unused-parameter
para eliminar el ruido.
El implícito -Wuninitialized
(con la opción -O2
) me ha sido muy útil, pero agregarlo inicialmente a su base de código puede ser un poco desalentador. Una forma de lidiar con esto es agregar dos macros (que parecen un poco extrañas: el signo igual es intencional):
#define ELIMINATE_GCC_WARNING = 0 // used to remove nuisance warnings
#define UNCHECKED_GCC_WARNING = 0 // not yet verified
Luego, puede eliminar rápidamente las advertencias de gcc y obtener una compilación limpia utilizando, por ejemplo:
int foo UNCHECKED_GCC_WARNING;
Luego, como paso opcional, retroceda y verifique estas adiciones, y cámbielas una por una a ELIMINATE_GCC_WARNING. Esto puede ser lento. Pero me sorprendería si no encontraras algunos errores existentes.
-Wextra
, entre otras cosas implica -Wtype-limits
:
Avisar si una comparación siempre es verdadera o siempre falsa debido al rango limitado del tipo de datos, pero no avise si hay expresiones constantes. Por ejemplo, advierta si una variable sin signo se compara con cero con ''<'' o ''> =''. Esta advertencia también está habilitada por -Wextra.
Encuentro esto realmente útil .