- assert.h
-
Стандартная библиотека
языка программирования Сassert.h — заголовочный файл стандартной библиотеки языка программирования С, в котором объявляется макрос препроцессора языка С
assert()
. Данный макрос реализует исключение, которое может использоваться для проверки сделанных программой вычислений.Содержание
Макросы
Макрос
assert()
добавляет к программе процедуру диагностики. После выполнения, если выражение ложно (то есть, результат сравнения 0),assert()
пишет информацию о вызове в поток stderr и вызывает функциюabort()
. Информация, которая пишется вstderr
включает в себя:- текст выражения, значение которого равно нулю 0
- имя файла с исходным кодом (предопределённый макрос
__FILE__
) - строка у файла с исходным кодом (предопределённый макрос
__LINE__
)
Для того, чтобы отключить проверку, не обязательно исключать её из кода или комментировать объявление макроса, достаточно лишь объявить ещё один макрос —
NDEBUG
в программе перед#include <assert.h>
, тогда объявление макроса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 (англ.)
Примечания
Категория:- Стандартные библиотечные заголовки языка Си
Wikimedia Foundation. 2010.