기타
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매크로를 사용합니다.
다음 글에서 봬요 ~