mac compile c++ g++

c++ - compile - g++ ubuntu



¿Qué hace “-Wall” en “g++-Wall test.cpp-o test”? (7)

Es la abreviatura de "advertir a todos": activa (casi) todas las advertencias de las que g ++ puede informarle. Por lo general, es una buena idea, especialmente si eres un principiante, porque entender y corregir esas advertencias puede ayudarte a solucionar muchos tipos diferentes de problemas en tu código.

-o cambia el nombre del archivo de salida (encontré que usando --help)

Pero no puedo averiguar qué hace -Wall ?


Habilita advertencias que los escritores de gcc consideran útiles y fáciles de evitar en la fuente. También hay -W (-Wextra en las versiones más recientes) que se consideran útiles, pero para las cuales los falsos positivos pueden ser difíciles o resultar en un código torpe.

gcc también tiene un montón de otras advertencias, generalmente menos útiles. Consulte http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options


Habilita todas las advertencias. (Lee como "Advertencia a todos")


Lamentablemente, ninguna de las respuestas está citando la parte realmente relevante del manual, lo que realmente lo lleva a un punto:

Esto habilita todas las advertencias sobre construcciones que algunos usuarios consideran cuestionables y que son fáciles de evitar (o modificar para evitar la advertencia), incluso en combinación con macros.

[...]

Tenga en cuenta que algunas banderas de advertencia no están implícitas en -Wall . Algunos de ellos advierten sobre construcciones que los usuarios generalmente no consideran cuestionables, pero que de vez en cuando puede buscar; otros advierten sobre las construcciones que son necesarias o difíciles de evitar en algunos casos, y no existe una forma sencilla de modificar el código para suprimir la advertencia. Algunos de ellos están habilitados por -Wextra pero muchos de ellos deben habilitarse individualmente.

Es decir:

  • -Wall no significa "todas las advertencias".
  • Tampoco significa "(casi) todo", ni mucho menos.
  • Significa un conjunto de opciones individuales que está obligado a cambiar .

En pocas palabras, se trata del mínimo absoluto de advertencias que debe establecer. Si bien -Wall -Wextra es mejor, todavía no hace uso de todos los errores que el compilador puede hacer por usted.

Personalmente, no iría por menos de -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual . Todos mis proyectos actuales usan una lista de advertencias más largas que eso (sin activar ninguna de ellas). Y sí reviso el manual en cada versión principal para nuevas opciones. El compilador es tu amigo. Utilice cualquier diagnóstico que pueda ofrecerle.


Muestra todas las advertencias. Recomiendo también usar -pedantic para advertir sobre algunas partes de código no conformes.


Ver man gcc.

-Mural enciende estas advertencias:

-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and Objective-C only) -Wimplicit-function-declaration (C and Objective-C only) -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wvolatile-register-var

-Wextra contiene:

-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init -Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)

Hay muchas más advertencias que debes activar explícitamente.

Por ejemplo, para nuestro código C usamos:

-Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wdisabled-optimization -Wdiv-by-zero -Wendif-labels -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wjump-miss-init -Wlogical-op -Werror = llaves faltantes -Wmissing-declarations -Wno-missing-format-attribute -Wmissing-include-dirs -Wmultichar -Wpacked -Wpointer-arith -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing = 2 -Wswitch -Wswitch-default -Werror = undef -Wno -used -Wvariadic-macros -Wwrite-strings -Wc ++ -compat -Werror = declaración-después-declaración -Werror = declaración-función-implícita -Wmissing-prototypes -Werror = nested-externs -Werror = definición de estilo antiguo -Werror = strict-prototypes

o simplemente el conjunto de advertencias con https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html


enables most warning messages .

Puede encontrar más información si usa g++ --help=warnings .