Assert.h
заголовочный файл языков C и C++ Из Википедии, свободной энциклопедии
assert.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляется макрос препроцессора языка С assert()
. Данный макрос реализует исключение, которое может использоваться для проверки сделанных программой вычислений.
Макросы
Суммиров вкратце
Перспектива
Макрос assert()
добавляет к программе процедуру диагностики. После выполнения, если выражение ложно (то есть, результат сравнения 0), assert()
пишет информацию о вызове в поток stderr и вызывает функцию abort()
. Информация, которая пишется в stderr
включает в себя:
- имя файла с исходным кодом (предопределённый макрос
__FILE__
) - строка у файла с исходным кодом (предопределённый макрос
__LINE__
) - функция в исходном коде (предопределённый макрос
__func__
) (добавлено в стандарте C99) - текст выражения, значение которого равно нулю 0
Для того, чтобы отключить проверку, необязательно исключать её из кода или комментировать объявление макроса, достаточно лишь объявить ещё один макрос — 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 (англ.)
Примечания
Wikiwand - on
Seamless Wikipedia browsing. On steroids.