Стандартная библиотека языка программирования С |
|
assert.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляется макрос препроцессора языка С assert()
. Данный макрос реализует исключение, которое может использоваться для проверки сделанных программой вычислений.
Макрос assert()
добавляет к программе процедуру диагностики. После выполнения, если выражение ложно (то есть, результат сравнения 0), assert()
пишет информацию о вызове в поток stderr и вызывает функцию abort()
. Информация, которая пишется в stderr
включает в себя:
__FILE__
)__LINE__
)__func__
) (добавлено в стандарте C99)
Для того, чтобы отключить проверку, необязательно исключать её из кода или комментировать объявление макроса, достаточно лишь объявить ещё один макрос — NDEBUG
в программе перед #include <assert.h>
:
#define NDEBUG
тогда объявление макроса assert()
будет иметь следующий вид:
#define assert(ignore)((void) 0)
и поэтому никак не будет влиять на работу программы.
Макрос assert() переопределяется каждый раз при подключении assert.h
в зависимости от макроса NDEBUG
.[1]
Макрос assert()
реализован в виде макроса, а не функции. Если макрос assert
используется для возможности вызывать саму функцию assert
, то верное функционирование кода не гарантируется.
#include <stdio.h>
#include <assert.h>
int main (void)
{
FILE *fd;
fd = fopen ("/home/user/file.txt", "r");
assert (fd);
fclose (fd);
return 0;
}
В данном примере макрос assert()
сработает в случае, если функция fopen()
выполнится с ошибкой.
assert.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .