#include <cassert>

 void assert (int expression )

 

expression 0 이 되면 assert error가 나타난다.

 

ex) assert( A != NULL );

A 가 NULL 이면 false(0) 이므로 assert error가 나오게 된다.

A 가 NULL 이 아니면 true(1) 이므로 pass.


 

assert 함수는 개발자가 오류가 생기면 치명적일 것이라는곳에 심어 놓는 에러 검출용 코드이다.

 

ex) 코드를 짰는데 특정 상황에서, 특정 변수 값이 0 이 되거나 음수가 되면 안돼! 라는 개발자가 가지고 있는 상황이 있을 것이고, 그 때  assert를 사용하여 검출하면 버그 발생위치, call stack등 여러 정보를 얻을 수 있다.

이는 대규모 프로젝트에서 dump를 남길 수도 있고, 상대적으로 적은 시간 안에 버그를 찾을 수 있게 된다.

 

중요한것은 assert 함수는 디버그 모드에서만 컴파일 된다는 점이다!

그렇기 떄문에 다른 코드에 영향을 주지 않는 코드만 넣어야한다.

 

 


[ 예시 ]

#include<iostream>
#include<cassert>
using namespace std;
int main(void)
{
    int score;
    while (true)
    {
        
        cout << "Input score : ";
        cin >> score;
 
        //0보다 작은 score가 들어오면 assert error!!
        assert(score >= 0);
        cout << "=> score : " << score << endl;
    }
    return 0;
}

 

[ 출력 ]

 

 


https://www.cplusplus.com/reference/cassert/assert/

 

assert - C++ Reference

12345678910111213141516171819202122 /* assert example */ #include /* printf */ #include /* assert */ void print_number(int* myInt) { assert (myInt!=NULL); printf ("%d\n",*myInt); } int main () { int a=10; int * b = NULL; int * c = NULL; b=&a; print_number

www.cplusplus.com

 

https://blockdmask.tistory.com/286

 

[C언어/C++] assert 함수에 대해서 : 디버깅을위한, 더 안전한 코드를 위한 오류 검출 방법

1. C/C++ assert함수란? - 간단하게 말하자면 assert 함수는 디버깅 모드에서 개발자가 오류가 생기면 치명적일 것이라는 곳에 심어 놓는 에러 검출용 코드입니다. - 예를들어서 int score 가 음수가 나

blockdmask.tistory.com

 

'Language & etc > Reference' 카테고리의 다른 글

string 의 erase  (0) 2021.11.26
substr  (0) 2021.11.15
std :: istringstream 에 대해서  (0) 2021.11.15

+ Recent posts