이 름
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(불 확 정 성 버 그 )를 만 들 수 있 다 .
관 련 항 목
번 역
한 글 Manpage 프 로 젝 트 (http://man.kldp.org) 2005년 1월 30일