Esta noticia ha sido evaluado por especialistas así se asegura la veracidad de nuestro post.
Solución:
Aquí están los míos:
-Wextra
,-Wall
: esencial.-Wfloat-equal
: útil porque por lo general probar números de punto flotante para la igualdad es malo.-Wundef
: advierte si un identificador no inicializado se evalúa en un#if
directiva.-Wshadow
: advierte cuando una variable local sombrea otra variable local, parámetro o variable global o cuando se sombrea una función integrada.-Wpointer-arith
: advierte si algo depende del tamaño de una función o devoid
.-Wcast-align
: advierte cada vez que se lanza un puntero de modo que se aumenta la alineación requerida del objetivo. Por ejemplo, avisar si unchar *
se lanza a unint *
en máquinas en las que solo se puede acceder a los números enteros en límites de dos o cuatro bytes.-Wstrict-prototypes
: advierte si se declara o define una función sin especificar los tipos de argumento.-Wstrict-overflow=5
: advierte sobre los casos en los que el compilador optimiza en función de la suposición de que no se produce un desbordamiento firmado. (El valor 5 puede ser demasiado estricto, consulte la página del manual).-Wwrite-strings
: dar string constantes el tipocarácter constante[
length]
de modo que copiar la dirección de uno en un noconst char *
puntero recibirá una advertencia.-Waggregate-return
: advierte si se define o llama a alguna función que devuelva estructuras o uniones.-Wcast-qual
: advierte cada vez que se lanza un puntero para eliminar un calificador de tipo del tipo de destino*.-Wswitch-default
: advertir cada vez que unswitch
declaración no tienedefault
caso*.-Wswitch-enum
: advertir cada vez que unswitch
declaración tiene un índice de tipo enumerado y carece de uncase
para uno o más de los códigos nombrados de esa enumeración*.-Wconversion
: advierte sobre conversiones implícitas que pueden alterar un valor*.-Wunreachable-code
: advierte si el compilador detecta que el código nunca se ejecutará*.
Los marcados * a veces dan demasiadas advertencias falsas, así que las uso según sea necesario.
varios de los -f
Las opciones de generación de código son interesantes:
-
los
-ftrapv
La función hará que el programa se cancele en el desbordamiento de enteros con signo (formalmente “comportamiento indefinido” en C). -
-fverbose-asm
es útil si estás compilando con-S
para examinar la salida del ensamblaje: agrega algunos comentarios informativos. -
-finstrument-functions
agrega código para llamar a las funciones de creación de perfiles proporcionadas por el usuario en cada punto de entrada y salida de la función.
Siempre usa -O
o superior (-O1
, -O2
, -Os
, etc). En el nivel de optimización predeterminado, gcc busca la velocidad de compilación y no hace suficiente análisis para advertir sobre cosas como variables unitarias.
Considere hacer -Werror
política, ya que las advertencias que no detienen la compilación tienden a ignorarse.
-Wall
prácticamente activa las advertencias que es muy probable que sean errores.
Advertencias incluidas en -Wextra
tienden a marcar el código común y legítimo. Pueden ser útiles para revisiones de código (aunque los programas de estilo pelusa encuentran muchas más trampas y son más flexibles), pero no los activaría para el desarrollo normal.
-Wfloat-equal
es una buena idea si los desarrolladores del proyecto no están familiarizados con el punto flotante, y una mala idea si lo están.
-Winit-self
es útil; Me pregunto por qué no está incluido en -Wuninitialized
.
-Wpointer-arith
es útil si tiene un código mayormente portátil que no funciona con -pedantic
.
valoraciones y reseñas
Nos puedes estimular nuestra misión añadiendo un comentario o valorándolo te estamos agradecidos.