YS's develop story

C++ ) assert매크로사용하기 본문

기타

C++ ) assert매크로사용하기

Yusang 2020. 10. 1. 08:49

안녕하세요 ~

 

 

오늘은 간단하게 assert 매크로에 대해서 정리해봤습니다.

assert 매크로는 C++에서는 cassert 헤더 파일에 정의되어 있으며

C에서는 assert.h 헤더파일에 정의되어 있습니다.

 

이 매크로는 정해진 조건에 맞지 않을 때 프로그램을 중단합니다.

즉, assert에 지정한 조건식이 false일 때 프로그램을 중단하며 true일 때는 프로그램이 계속 실행합니다.

이는 잘못된 값이 입력되었을 때 프로그램을 사전에 중단하여 치명적인 버그를 예방하는데 사용합니다.

 

아래의 예제 코드를 살펴봅시다 ~

#include <iostream>
#include <cassert>

using namespace ::std;

void positiveInteger(int poi) {
	assert(poi > 0);

	cout <<poi<<" 는 양의 정수" << endl;
}

int main() {

	positiveInteger(5);

	return 0;
}

positiveInteger 라는 함수를 정의하고

이 값의 인자인 poi가 0보다 작을경우 프로그램을 중단하도록 assert매크로를 설정 했습니다.

여기서 헷갈릴 수 있는데 if문과 달리 assert는 조건식이 false일 때 발동됩니다 !

 

오류없이 함수가 정상적으로 작동합니다.

 

예제 코드를 아래와 같이 조금 바꿔 봅시다.

assert매크로가 실행해도록 poi값을 0으로 지정했습니다.

#include <iostream>
#include <cassert>
using namespace ::std;

void positiveInteger(int poi) {

	assert(poi > 0);
	cout <<poi<<" 는 양의 정수" << endl;
}

int main() {

	positiveInteger(0);
	return 0;
}

 

다음과 같이 에러메시지가 발생하면서 프로그램이 종료됩니다.

정리하자면 assert 매크로를 사용해서 잘못된 값이 전달될 경우 치명적 에러를 막고자

사전에 프로그램을 종료하는 assert매크로를 사용합니다.

 

다음 글에서 봬요 ~ 

Comments