c++ - segundo - desactivar windows defender windows 10
cómo deshabilitar completamente la afirmación (5)
Tengo mi código lleno de llamada para assert(condition)
. En la versión de depuración yo uso g++ -g
explotando mi aserción. Con mi sorpresa, puedo ver que la afirmación funciona también en mi versión de lanzamiento, la compilada sin la opción -g
.
¿Cómo puedo deshabilitar completamente en tiempo de compilación mi afirmación? ¿Debo definir explícitamente NDEBUG
en cualquier compilación que NDEBUG
a pesar de que son debug, release o lo que sea?
Debe #define NDEBUG
(o usar el indicador -DNDEBUG
con g ++ ) esto deshabilitará asertar mientras esté definido antes de la inclusión del archivo de encabezado de aserción.
El indicador -g
no afecta la operación de assert
, solo garantiza que haya varios símbolos de depuración disponibles.
Establecer NDEBUG
es la forma estándar (como en el estándar ISO) de deshabilitar aserciones.
Puedes deshabilitar completamente las aserciones
#define NDEBUG
#include <assert.h>
o puede configurar NDEBUG (a través de -DNDEBUG) en su procedimiento de creación / creación de archivos dependiendo de si desea una versión productiva o dev.
Sí, defina NDEBUG
en la línea de comandos / sistema de compilación con la opción preprocesador / compilador -DNDEBUG
.
Esto no tiene nada que ver con la información de depuración insertada por -g
.
Utilice #define NDEBUG
7.2 Diagnóstico
1 El encabezado de fi ne la macro de afirmación y se refiere a otra macro,
NDEBUG
que no está definido por
<assert.h>
. Si NDEBUG se define como un nombre de macro en el punto del archivo de origen donde se incluye, la macro de confirmación se define simplemente como
#define assert(ignore) ((void)0)
La macro de confirmación se redefine según el estado actual de NDEBUG cada vez que se incluye
<assert.h>
.