Tengo mi código lleno de llamada al assert(condition)
. En la versión de depuración utilizo g++ -g
explotando mi aserción. Con mi sorpresa, puedo ver que la aserción funciona también en mi versión de lanzamiento, la compilada sin la opción -g
.cómo deshabilitar por completo la aserción
¿Cómo puedo desactivar por completo en tiempo de compilación mi afirmación? ¿Debería definir explícitamente NDEBUG
en cualquier compilación que produzca a pesar de que estén depuradas, lanzadas o lo que sea alguna otra?
Algo fuera de tema: si desea información de depuración, '-g' es equivalente a' -g2'. '-g3' podría ser una mejor opción, ya que pone a disposición la información más simbólica. Por ejemplo, en '-g3', las #defines simbólicas estarán disponibles. Aunque parece que algunas cadenas de herramientas se ahogan en '-g3'.Además, muchas bibliotecas externas también dependen de '-DDEBUG' para las construcciones 'debug' (Posix solo certifica' -DNDEBUG' para 'versiones'). – jww