assert() — 조건 확인

형식

#include <assert.h>
void assert(int expression);

언어 레벨

ANSI

스레드세이프

아니오

설명

assert() 함수는 expression이 false(0)이면 stderr에 진단 메세지를 인쇄하고 프로그램을 중단합니다. 진단 메세지는 편집 중에 사용된 언어 레벨에 따라 다음 형식 중 하나입니다.
Assertion failed: expression, file filename, line line-number.
Assertion failed: expression, file filename, line line-number, function function-name.

assert() 함수는 expression이 true(0이 아님)이면 조치를 수행하지 않습니다.

프로그램 논리 오류를 식별하려면 assert() 함수를 사용하십시오. 프로그램이 의도한 대로 작동하는 경우에만 true를 보유한 expression을 선택하십시오. 프로그램을 디버깅한 후에는 특수 no-debug ID인 NDEBUG를 사용하여 프로그램에서 assert() 호출을 제거할 수 있습니다. #define 지시문을 가진 값에 NDEBUG를 정의하면 C 프리프로세서는 void 표현식에 대한 모든 assert 호출을 확장합니다. NDEBUG를 사용하는 경우에는 프로그램에 <assert.h>를 포함시키기 전에 정의해야 합니다.

리턴값

리턴값이 없습니다.
참고: assert() 함수는 매크로로 정의됩니다. #undef 지시문을 assert()에 사용하지 마십시오.

이 예에서 assert() 함수는 널(null) 스트링과 빈 스트링에 대해 string을 테스트하고 이러한 인수를 처리하기 전에 length가 양수임을 확인합니다.
#include <stdio.h>
#include <assert.h>
 
void analyze (char *, int);
 
int main(void)
{
   char *string = "ABC";
   int length = 3;
 
   analyze(string, length);
   printf("The string %s is not null or empty, "
          "and has length %d \n", string, length);
}
 
void analyze(char *string, int length)
{
   assert(string != NULL);     /* cannot be NULL */
   assert(*string != '\0');    /* cannot be empty */
   assert(length > 0);         /* must be positive */
}
 
/****************  Output should be similar to  ******************
The string ABC is not null or empty, and has length 3
*****************************************************************/