YS's develop story
C++ ) assert매크로사용하기 본문
안녕하세요 ~
오늘은 간단하게 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매크로를 사용합니다.
다음 글에서 봬요 ~
'기타' 카테고리의 다른 글
[Git] Git 저장소 생성, 최초로 커밋하기 (git commit,git add,git status,git log) (0) | 2020.12.15 |
---|---|
C++ Error ) 식에 클래스 형식이 있어야 합니다, error C2288 , 디폴트 생성자 관련 실수 (1) | 2020.10.08 |
C++ Error ) 기본 인수 재정의, 함수의 디폴트 값은 함수의 선언에 작성해야 한다. (0) | 2020.09.26 |
C언어 ) char [], char * 의 차이점 (0) | 2020.09.22 |
C++ ) Const reference parameter , Value parameter 의 비교 (0) | 2020.09.18 |
Comments