Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

аСтраницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


<assert.h>: Диагностика


Детальное Описание

а#include <assert.h> 

Этот заголовочный файл определяет помощь при отладке.

Печать сообщений об ошибках по умолчанию не включена. Включить её можно командой

а__ASSERT_USE_STDERR 

перед включением заголовочного файла <assert.h>. По умолчанию вызывается только abort(), для остановки приложения.

 

 

Макроопределение

#define 

assert(expression)


Документация Макроопределения

#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');аааа /*ааа неаа можетаа быть пустой */

аааааааааааааа

аааааааааааааа }

Hosted by uCoz