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>.