Asert.h je soubor záhlaví standardní knihovny C , který deklaruje makro preprocesoru assert()C. Toto makro implementuje výjimku, kterou lze použít ke kontrole výpočtů provedených programem.
Makro assert()přidá do programu diagnostický postup. Pokud je po spuštění výraz nepravdivý (to znamená, že výsledek porovnání je 0), assert()zapíše informace o volání do stderr a zavolá abort(). Informace, které jsou zapsány, stderrzahrnují:
Aby bylo možné kontrolu zakázat, není nutné jej vylučovat z kódu nebo komentovat deklaraci makra, stačí deklarovat ještě jedno makro - NDEBUGv programu dříve #include <assert.h>:
pak bude deklarace makra assert()vypadat takto:
#define claim(ignore)((void) 0)a proto nijak neovlivní chod programu.
Makro Claim() je přepsáno pokaždé, když je připojeno assert.h, v závislosti na NDEBUG. [jeden]
Makro assert()je implementováno jako makro, nikoli jako funkce. Pokud je makro assertpoužito k tomu, aby bylo možné volat samotnou funkci assert, není zaručeno správné fungování kódu.
V tomto příkladu bude makro assert()fungovat, pokud funkce fopen()selže.