Siirry sisältöön

C/Standardikirjastot/assert.h

Wikikirjastosta
#include <assert.h>
void assert(int ehto);

Funktion tavoin toimiva, hyödyllinen esikääntäjämakro, jolla voidaan varmistua ehdon paikkansapitävyydestä. Mikäli ehto on epätosi, ohjelman suoritus päättyy välittömästi niin kuin stdlib.h:n abort()-funktioita olisi kutsuttu.

void yhteenlasku(int *summa, int luku) {
  assert(summa != NULL);   /* summa ei saa olla NULL. */
  *summa += luku;
}

assert-tarkistukset ovat hyödyllisiä esim. algoritmeja toteutettaessa. Algoritmeilla voi olla ns. invariantteja, ehtoja, joiden pitää olla aina paikkansa tietyssä kohtaa algoritmia. asserteilla voidaan tarkistaa, että algoritmi on toteutettu ainakin niiden osalta oikein.

assert-makro lakkaa tekemästä mitään, jos esikääntäjämuuttuja NDEBUG määritellään ennen assert.h:n sisällytystä, esim. kääntäjän asetuksella. Näin voidaan helposti päästä eroon tarkistuksista, jotka hidastaisivat turhaan ohjelman tuotantoversiota.