Вывести отладочное сообщение и опционально остановить выполнение программы
#include <assert.h>void assert( int expression );
libc
Макрос assert() выводит отладочное сообщение в stderr и завершает программу, используя функцию abort(), если в качестве expression было передано 0
. Отладочное сообщение включает expression, имя исходного файла (значение __FILE__
) и номер строки, в которой произошло нарушение выражения, указанного в expression (значение __LINE__
).
Если expression имеет ненулевое значение, никаких действий не предпринимается.
Обычно макрос assert() используется при разработке программы для определения логических ошибок. Следует подобрать expression так, чтобы оно было истинным, когда программа работает корректно.
После того, как программа отлажена, можно использовать специальный идентификатор NDEBUG
для удаления вызовов assert() из программы во время следующей компиляции. При использовании опции -D для qcc или директивы #define
для определения NDEBUG
(с каким-либо значением) препроцессор C игнорирует все вызовы assert() в коде программы.
Для удаления вызовов assert() нужно определить NDEBUG в коде перед включением заголовочного файла <assert.h> (то есть перед #include <assert.h> ).
Если
и |
#include <stdio.h>#include <stdlib.h>#include <assert.h>void process_string( char *string ){/* use assert to check argument */assert( string != NULL );assert( *string != '\0' );/* rest of code follows here */}int main( void ){process_string( "hello" );process_string( "" );return (EXIT_SUCCESS);}
ANSI, POSIX 1003.1
assert() является макросом.
Предыдущий раздел: Описание API системной библиотеки