ASSERT(3)

이름
assert - expression 이 거짓인 경우 프로그램 종료

사용법
#include <assert.h>

void assert (int expression);

설명
<assert.h> 가 마지막으로 포함될 시점에 매크로 NDEBUG 가 정의되어 있으면, 매크로 assert() 는 아무 코드도 생성하지 않으며 따라서 아무 것도 하지 않는다. 그렇지않고, (즉, NDEBUG 가 정의되어있지 않고) expression 이 거짓이면, 매크로 assert() 는 에러 메시지를 표준 출력으로 출력하고, abort() 를 호출하여 프로그램을 종료한다.

이 매크로는 프로그래머가 버그를 잡는데에 쓰인다. 실제로 "assertion failed in file foo.c, function do_bar(), line 1287" 와 같은 메시지는 일반 사용자에겐 아무 소용이 없다.

반환값
반환값을 갖지 않는다.

호환
ISO9899 (ANSI C)

버그
assert() 는 매크로 구현된다.; assert() 로 검사하는 expression이 부작용을 낳는다면, 프로그램의 실행은 NDEBUG 가 정의 되어 있느냐에 따라 달라진다. 이런 점 때문에 디버깅 모드에서는 사라지는 Heisenbugs(불확정성 버그)를 만들 수 있다.

관련 항목
exit(3), abort(3)

번역
한글 Manpage 프로젝트 (http://man.kldp.org) 2005년 1월 30일