Содержание | Глава 18

Функция assert

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

Макрос assert(), определенный в заголовке <assert.h>, записывает информацию об ошибке в поток stderr, а затем прекращает выполнение программы, если выражение ехр равно нулю. В противном случае макрос assert() никаких действий не выполняет. Хотя формат выводимого сообщения зависит от конкретной реализации системы программирования, большинство трансляторов используют сообщение, подобное следующему:

Assertion failed: <выражение>, file <имя_файла>, line <номер_строки>

В версии С99 отображаемое сообщение также включает имя функции, содержащей макрос assert().

Макрос assert() обычно используется, чтобы убедиться в правильном выполнении программы, причем выражение составляется таким образом, что оно истинно только при отсутствии ошибок.

Нет необходимости удалять из исходного текста программы операторы assert() после отладки программы, потому что если определить макрос NDEBUG, то макрос assert() будет игнорироваться.

Пример

Этот фрагмент кода проверяет, является ли данное, прочитанное из последовательного порта, ASCII-символом (то есть, не используется ли седьмой бит):

/* ... */
ch = read_port();
assert(!(ch & 128)); /* проверяет 7-й бит */

Зависимые функции

abort()
Содержание | Глава 18