ASSERT(3)

НАЗВАНИЕ
assert - прекращает работу программы при ложном утверждении

СИНТАКСИС
#include <assert.h>

void assert(scalar expression);

ОПИСАНИЕ
Если макрос NDEBUG был определен в момент последнего включения <assert.h> то макрос assert() не создает никакого кода, и соответственно вообще ничего не делает. Иначе, макрос assert() выводит на стандартный вывод сообщение об ошибке вызовом abort() и прекращает работу программы, если утверждение expression ложно (т.е. при сравнении равно нулю).

Целью этого макроса является помощь программисту в обнаружении ошибок в его программах. Сообщения типа "assertion failed in file foo.c, function do_bar(), line 1287" не смогут помочь пользователю ничем.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Нет возвращаемого значения.

СООТВЕТСТВИЕ СТАНДАРТАМ
ISO9899 (ANSI C). В стандарте 1990 года expression была переменной типа int, и поведение функции было непредсказуемо, если появлялись другие типы данных; но в стандарте 1999 года указано, что переменная должна быть любого скалярного типа.

НАЙДЕННЫЕ ОШИБКИ
assert() реализован как макрос. Если выражение expression выполняет какие-то действия, то поведение программы будте различным в зависимости от NDEBUG.

СМ. ТАКЖЕ
exit(3), abort(3), assert_perror(3)