C Language Aserción simple


Ejemplo

Una afirmación es una declaración utilizada para afirmar que un hecho debe ser verdadero cuando se alcanza esa línea de código. Las afirmaciones son útiles para asegurar que se cumplan las condiciones esperadas. Cuando la condición pasada a una aserción es verdadera, no hay acción. El comportamiento en condiciones falsas depende de las banderas del compilador. Cuando las aserciones están habilitadas, una entrada falsa provoca una detención inmediata del programa. Cuando están desactivados, no se realiza ninguna acción. Es una práctica común habilitar aserciones en compilaciones internas y de depuración, y deshabilitarlas en compilaciones de versión, aunque las aserciones a menudo se habilitan en la versión. (El hecho de que la terminación sea mejor o peor que los errores depende del programa). Las afirmaciones se deben usar solo para detectar errores de programación internos, lo que generalmente significa que se pasan parámetros incorrectos.

#include <stdio.h>
/* Uncomment to disable `assert()` */
/* #define NDEBUG */
#include <assert.h>

int main(void)
{
    int x = -1;
    assert(x >= 0);

    printf("x = %d\n", x);   
    return 0;
}

Posible salida con NDEBUG indefinido:

a.out: main.c:9: main: Assertion `x >= 0' failed.

Posible salida con NDEBUG definido:

x = -1

Es una buena práctica definir NDEBUG globalmente, para que pueda compilar fácilmente su código con todas las aserciones NDEBUG o desactivadas. Una forma fácil de hacer esto es definir NDEBUG como una opción para el compilador, o definirlo en un encabezado de configuración compartido (por ejemplo, config.h ).