assert.h

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 12:46, 12 травня 2020, створена BunykBot (обговорення | внесок) (заміна застарілого тегу source)
Перейти до навігації Перейти до пошуку

assert.h — заголовний файл стандартної бібліотеки мови програмування С, в якому оголошується макрос препроцесора мови С assert(). Цей макрос реалізує висловлювання, котре може використовуватись для отримання припущень зроблених програмою.

Макрос assert() додає до програми процедуру діагностики. Після виконання, якщо визначення хибне (тобто, порівняння рівне 0), assert() пише інформацію про виклик, котрий виконався з помилкою на stderr і викликає функцію abort(). Інформація, котра пишеться на stderr включає у себе:

  • текст визначення, рівного 0
  • ім'я файлу з джерельним кодом (the predefined macro __FILE__)
  • рядок у файлу з джерельним текстом (the predefined macro __LINE__)

Використання

Для того, щоб відключити перевірку не обов'язково вилучати з коду або коментувати оголошення макросу, достатньо лиш оголосити ще один макрос -- NDEBUG у програмі перед #include <assert.h>, тоді оголошення макросу assert() матиме наступний вигляд:

#define assert(ignore)((void) 0)

а тому ніяк не впливатиме на роботу програми.

Макрос assert() реалізований у вигляді макросу, а не функції. Якщо макрос assert забраний для можливості викликати саму функцію assert, то вірне функціонування коду не гарантується.

Приклад коду

#include <stdio.h>
#include <assert.h>

int main (void)
{
        FILE *fd;

        fd = fopen ("file.txt", "r");
        assert (fd);
        
        fclose (fd);

        return 0;
}

У даному прикладі макрос assert() спрацює у випадку, якщо функція fopen() виконається з помилкою.

Посилання