assert - abort the program if assertion is false
#include <assert.h>
void assert(scalar expression);
This macro can help programmers find bugs in their programs, or handle exceptional cases via a crash that will produce limited debugging output.
If expression is false (i.e., compares equal to zero), assert() prints an error message to standard error and terminates the program by calling abort(3)EN. The error message includes the name of the file and function containing the assert() call, the source code line number of the call, and the text of the argument; something like:
prog: some_file.c:16: some_func: Assertion `val == 0' failed.
If the macro NDEBUG is defined at the moment <assert.h> was last included, the macro assert() generates no code, and hence does nothing at all. It is not recommended to define NDEBUG if using assert() to detect error conditions since the software may behave non-deterministically.
이 섹션에서 사용되는 용어에 대한 설명은 attributes(7)EN을 참조하십시오.
| 상호 작용 | 속성 | 번호 |
| assert() | Thread safety | MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
assert() 는 매크로 구현된다.; assert() 로 검사하는 expression이 부작용을 낳는다면, 프로그램의 실행은 NDEBUG 가 정의 되어 있느냐에 따라 달라진다. 이런 점 때문에 디버깅 모드에서는 사라지는 Heisenbugs(불확정성 버그)를 만들 수 있다.