Saltar al contenido

¿Cuáles son las banderas GCC útiles para C?

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 de void.
  • -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 un char * se lanza a un int * 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 tipo cará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 un switch declaración no tiene default caso*.
  • -Wswitch-enum: advertir cada vez que un switch declaración tiene un índice de tipo enumerado y carece de un case 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *