Pregunta Opciones recomendadas de advertencia de gcc para C [cerrado]


Aparte de -Wall ¿qué otras advertencias han encontrado útiles las personas?

http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html


74
2017-09-30 19:42


origen


Respuestas:


Yo uso de forma rutinaria:

    gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
        -Wstrict-prototypes -Wmissing-prototypes

Este conjunto atrapa mucho a las personas que no están acostumbradas (personas cuyo código compilo con esas banderas por primera vez); rara vez me da un problema (aunque -Wcast-qual ocasionalmente es una molestia).


45
2017-09-30 20:20



A partir de 2011-09-01, con la versión 4.6.1 de gcc

Mi alias actual de "desarrollo"

gcc -std = c89 -pedantic -Wall \
    -Win-missing-llaves -Wextra -Wno-missing-field-initializers -Wformat = 2 \
    -Wswitch-default -Wswitch-enum -Wcast-align -Wpointer-arith \
    -Wbad-function-cast -Wstrict-overflow = 5 -Wstrict-prototypes -Winline \
    -Wundef -Wansted-externs -Wcast-qual -Wshadow -Wunreachable-code \
    -Wlogical-op -Wfloat-equal -Wstrict-aliasing = 2 -Wredundant-decls \
    -Wold-style-definition -Werror \
    -ggdb3 \
    -O0 \
    -fno-omit-frame-pointer -ffloat-store -fno-common -fstrict-aliasing \
    -lm

El alias de "liberación"

gcc -std = c89 -pedantic -O3 -DNDEBUG -flto -lm

A partir de 2009-11-03

alias de "desarrollo"

gcc -Wall -Wextra -Wformat = 2 -Wswitch-default -Wcast-align -Wpointer-arith \
    -Wbad-function-cast -Wstrict-prototypes -Winline -Wundef -Wnested-externs \
    -Wcast-qual -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code \
    -Wstrict-aliasing = 2 -ffloat-store -fno-common -fstrict-aliasing \
    -lm -std = c89 -pedantic -O0 -ggdb3 -pg --coverage

alias de "liberación"

gcc -lm -std = c89 -pedantic -O3 -DNDEBUG --combina -fwhole-program -funroll-loops

33
2017-11-03 12:43



Me gusta -Werror. Mantiene el código de advertencia libre.


15
2017-09-30 19:47



Empecé con C ++, así que cuando hice el cambio para aprender C, me aseguré de ser extra-anal:

-fmessage-length = 0
-ansi -pedantic -std = c99
-Werror
-Pared
-Wextra
-Wwrite-strings
-Winit-self
-Wallar-alinear
-Wcast-qual
-Winter-arith
-Wstrict-aliasing
-Wformat = 2
-Wmissing-declarations
-Wmissing-include-dirs
-Wno-sin usar-parámetro
-Inicializado
-Wold-style-definition
-Wstrict-prototipos
-Wmissing-prototipos

14
2018-01-06 02:05



Obtenga el manual de la versión de GCC que usa, encuentre todas las opciones de advertencia disponibles, y luego desactivar solamente aquellos para los que tienes una irresistible razón para hacerlo (Por ejemplo, cabeceras de terceros no modificables que, de lo contrario, te darían muchas advertencias). Documenta esos motivos. (En el archivo Makefile o donde establezca esas opciones). Revise la configuración en intervalos regulares, y siempre que actualice su compilador.

El compilador es tu amigo Las advertencias son tu amigo Bríndele al compilador la posibilidad de contarle posibles problemas.


9
2017-11-03 12:35



Yo también uso:

-Wstrict-overflow = 5

Para atrapar esos errores desagradables que mayo ocurrir si escribo código que se basa en el comportamiento de desbordamiento de enteros.

Y:

-Wextra

Lo que permite algunas opciones que también son agradables tener. La mayoría son para C ++ sin embargo.


5
2017-09-30 19:49



Normalmente compilo con "-W -Wall -ansi -pedantic", esto ayuda a garantizar la máxima calidad y portabilidad del código.


2
2017-09-30 19:44



-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter

Para el modo "Dame mucho", dejo el -Wno ...

Me gusta tener mi código de advertencia gratuita, especialmente con C ++. Mientras que las advertencias del compilador de C a menudo se pueden ignorar, muchas advertencias de C ++ muestran defectos fundamentales en el código fuente.


2
2017-09-30 20:26



-pedantic-errors


1
2017-09-30 19:43



-Wfloat-equal, -Wshadow, -Wmissing-prototypes,


1
2017-09-30 20:30