C Language Asserzione semplice


Esempio

Un'asserzione è un'affermazione usata per affermare che un fatto deve essere vero quando viene raggiunta quella linea di codice. Le asserzioni sono utili per garantire che le condizioni previste siano soddisfatte. Quando la condizione passata a un'affermazione è vera, non c'è azione. Il comportamento su false condizioni dipende dai flag del compilatore. Quando le asserzioni sono abilitate, un falso input provoca l'arresto immediato del programma. Quando sono disabilitati, non viene intrapresa alcuna azione. È pratica comune abilitare le asserzioni nelle build interne e di debug e disabilitarle nelle build di rilascio, sebbene le asserzioni siano spesso abilitate nel rilascio. (Se la terminazione è migliore o peggiore degli errori dipende dal programma.) Le asserzioni dovrebbero essere utilizzate solo per rilevare errori di programmazione interni, che in genere significa essere passati parametri non validi.

#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;
}

Possibile output con NDEBUG indefinito:

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

Possibile output con NDEBUG definito:

x = -1

È buona norma definire NDEBUG livello globale, in modo da poter facilmente compilare il codice con tutte le asserzioni NDEBUG o disattivate. Un modo semplice per farlo è definire NDEBUG come opzione per il compilatore, o definirlo in un'intestazione di configurazione condivisa (es. config.h ).