а#include <assert.h>
Этот заголовочный файл определяет помощь при отладке.
Печать сообщений об ошибках по умолчанию не включена. Включить её можно командой
а__ASSERT_USE_STDERR
перед
включением
заголовочного
файла <assert.h>
. По
умолчанию
вызывается
только abort(),
для
остановки
приложения.
|
|
Макроопределение |
|
#define |
assert(expression) |
Параметры:
|
expression |
Выражение, для проверки. |
Макрос assert() проверяет передаваемое выражение, если оно ложно, процесс запроса будет закончен. Диагностическое сообщение написано stderr и функции abort() вызывается, фактически заканчивая программу.
Если выражение верно, макрос assert() не делает ничего.
Макрос assert() может быть удален в, собирают время, определяя NDEBUG как макрос (например, используя опцию компилятора-DNDEBUG).
Automatically
generated by Doxygen 1.5.2 on 21 Dec 2007.
Процедураа assertа
печатает
диагностическое
сообщение и
завершает
вызванный
процесс, если
expression ложно,а 0.а
Диагностическое сообщение имеет форму:
аааааааааааааа Assertion
failed:а file <filename>, line <linenumber>, где
аааааааааааааа Assertion failedа -
Утверждение
потерпело
неудачу,
аааааааааааааа filenameа -а
имяа
исходного
файла,
аааааааааааааа linenumber - номер
строки,
которая
ошибочна.
Если expression истинно (ненулевое),
никакогоа
действияа не
выполняется.
аааааааааааааа Процедура
assert обычно
используется
для
обнаруженияа
логических
ошибок в
программе.
Выражение expression
должно быть
заданоа
таким
образом, чтобы
оно было
истинным,
если
программа выполняется
как намечено.
аааааааааааааа После
тогоа
кака
отлаженаа
программа,а может
бытьа
использован
специальный
"no debug"
идентификатор
NDEBUG для
удаления
вызовов assert из
программы.
Если NDEBUG
определена (любыма
значением)а
опциейа
команднойа строкиа /Dа илиа с
директивой #define,
препроцессор
языка Си
удаляет все
вызовы assertа иза исходной
программы.
аааааааааааааа Пример:
аааааааааааааа #include <stdio.h>
аааааааааааааа #include <assert.h>
аааааааааааааа analyse_string (string)
аааааааааааааа char *string;
аааааааааааааа {
аааааааааааааа /*а
проверка
строки перед
обработкойа */
аааааааааааааа assert (string != NULL);ааааа /*а не
может быть NULL, здесьаа
должнааа быть
строка */
аааааааааааааа assert (*string != '\0');аааа /*ааа неаа можетаа быть пустой */
аааааааааааааа …
аааааааааааааа }