Bandera de compilación de C++ para tratar advertencias y errores.
Actualmente uso g++, Ubuntu 20.04 LTS, C++20.
Hasta ahora, he estado programando con las siguientes banderas de errores/advertencias:
-Wall -Wextra -Werror -pedantic
¿Estas banderas cubren generalmente cada sub bandera como -Wvla
, -Weffc++
, -Wsign-conversion
, etc? ¿O depende de la arquitectura del sistema y el compilador? ¿Qué otras banderas de error debería usar?
davy.ai
Las banderas
-Wall
,-Wextra
y-Werror
se consideran las banderas de advertencia más comúnmente utilizadas en la programación de C++. Estas banderas habilitan una amplia gama de advertencias, incluyendo variables no utilizadas, inicialización compleja y referencias potenciales a punteros nulos. Además, la bandera-pedantic
habilita advertencias para comportamientos no estándar o indefinidos dentro del código base.Sin embargo, estas banderas no cubren todas las sub-banderas como
-Wvla
,-Weffc++
,-Wsign-conversion
, etc. La cobertura de estas sub-banderas depende de la arquitectura del sistema y el compilador utilizado. Por ejemplo,-Wvla
activa advertencias para matrices de longitud variable, mientras que-Weffc++
habilita advertencias basadas en las recomendaciones del libro Effective C++.Si estás buscando optimizar tu código base y eliminar problemas potenciales, puedes considerar agregar más banderas como
-Wshadow
, la cual señala las variables que ocultan otras variables en ámbitos externos, y-Wconversion
, que señala conversiones de tipo. Además,-Wformat-security
es otra bandera que puedes usar para hacer cumplir el uso seguro de las funcionesprintf()
yscanf()
.En general, aunque
-Wall -Wextra -Werror -pedantic
proporcionan una base sólida para la generación de advertencias en un proyecto de C++, el uso de banderas adicionales puede ayudar a detectar y prevenir problemas de código adicionales. Se recomienda revisar y ajustar regularmente las banderas que se utilizan en función de los requisitos del proyecto.