C_C++/C_라이브러리_함수

(C언어) assert: 조건을 검사하고 그 결과에 따라 프로그램 종료

고니자니 2023. 1. 30. 10:25
반응형

#assert #조건 #검사 #abort

 

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

assert 함수는 if문으로 확장된 매크로입니다. 인수로 사용된 test가 0이면 assert 함수는 stderr에 메시지를 출력하고 abort 함수를 호출하여 프로그램을 종료시킵니다.

assert 함수는 다음과 같은 메시지를 출력합니다.

   Assertion failed: test, filename, line linenum

filename과 linenum은 assert 매크로를 포함하는 파일명과 라인 번호를 나타냅니다.

 

#define NDEBUG    // No Debugging
#include <assert.h>

#include <assert.h> 앞에 #define NDEBUG 명령문을 사용하면 assert 명령은 주석으로 처리됩니다.

 

#include <stdio.h>
//#define NDEBUG
#include <assert.h>

int div(int a, int b)
{
	if (b == 0) return 0;
	printf("%d\n", a / b);
	return 1;
}

int main()
{
	//assert(div(10, 5));
	assert(div(10, 0));
	return 0;
}

assert의 메시지
abort 함수의 결과

 

 

반응형