Estoy aprendiendo C ++ y estoy usando g ++ en Linux para practicar.
Quiero saber si las personas que trabajan como programadores usan el indicador pedagógico g ++ y también su importancia en el mundo real.
¿Qué pasa con otros compiladores, también permiten esto? ¿Se ha convertido esto en un estándar de facto?
Estoy interesado porque estoy leyendo C ++ Primer donde el autor señala que es ilegal usar expresiones no constantes como dimensión en la definición de matriz y g ++ por defecto lo permite. Y puede haber otras cosas que desconozco.
Respuestas:
Sí, absolutamente haz esto. De hecho, es necesario estudiar la página del manual y encienda más advertencias que
-pedantic
y-Wall
va a hacer.No, no hay un estándar. MSVC utiliza,
/W4
por ejemplo.fuente
-Wall -Wextra -Werror -pedantic -std=c++0x
:)-pedantic
C ++, ya que el manual de GCC implica que solo está destinado a C, y he pasado a usarlo-std=c++14
en nuevos proyectos.-Wall -Wextra -Werror -std=c++14
:)-Werror
convierte todas las advertencias en errores. Pero-pedantic-errors
solo comete errores porStandard ICO C++
infracciones.Si bien no he programado C ++ durante bastante tiempo, le aconsejo que use esta bandera. Le ayuda a crear código compatible con los estándares y facilitará la vida de todos. AFAIK, la mayoría de los otros compiladores no son compatibles con las extensiones gcc / g ++.
Odio, por ejemplo, cuando no puedo compilar código solo porque el desarrollador original decidió codificar contra extensiones de compilador no estándar.
Apuesto a que una gran cantidad (digamos el 20%) de programas de Linux que se escribieron en C / C ++ no se compilará con nada más que gcc / g ++, lo que me pone un poco triste. Siempre adherirse a los estándares.
fuente
Personalmente uso:
-Wall -Wextra -Wshadow -Weffc ++ -Wstrict-aliasing -ansi -pedantic -Werror
Por lo tanto, activa una serie de advertencias, pero lo más importante es que trata todas las advertencias como errores (ya que la mayoría de las advertencias son errores lógicos en su pensamiento).
fuente
-Wunreachable-code -Wno-long-long
-g -pg -fprofile-arcs -ftest-coverage
-g -O0
-O3
Es muy esencial usar la
-pedantic
bandera.Solo agregaría que con el estándar actual es aconsejable usar algo similar a:
Dónde:
-std=c++17
le dice que se adhiera a la revisión del estándar C ++, publicado en 2017, puede leer más sobre esto aquí .-Wall
le dice que:-Wextra
le dice que habilite algunas advertencias más, aún no todas.-Werror
le dice que convierta todas las advertencias en errores.-Wpedantic
o simplemente-pedantic
le dice que:-pedantic-errors
le dice que dé un error siempre que el estándar base (ver -Wpedantic) requiera un diagnóstico.Este conjunto generalmente es útil no solo para principiantes, ya que gradualmente aprenderán que cada advertencia tiene el potencial de provocar un error, sino también para un uso normal.
Todas las opciones de advertencia se describen en detalle aquí en la página GNU / GCC .
fuente