본문 바로가기
Programing_Language/C++

assert (단언하기) in C++

by neohtux 2020. 12. 15.
728x90

assert

  • assert 는 Debug 모드에 실행된다.

  • 디버깅시 컴파일러의 도움을 받을 수 있다.

  • static_assert는 컴파일 타임에 적용된다.

  • assert 는 런타임에 적용된다.

  • 반대로 assert 키워드는 Release 모드에서는 실행이 안된다.

assert

  • 변수 체크할때 사용 할 수 있다. 런타임에 적용
#include<iostream>
using namespace std;

int main(void)
{
  int a = 1;

  a+=9;
  /*... 많은 과정을 생략중...*/


  assert(a==10)  //이 과정이 끝나면 a는 반드시 10 이어야 한다고 가정

  // 만약 19번 행에서 a가 10이 아닌 다른 수면
  // debug모드에서 에러가 나면서 콘솔로 출력이됨.
  // 


  return 0;
}


static_assert

  • static_assert 경우에 컴파일 타임에 적용됨으로 상수를 체크할때 유용하다.
 #include<iostream>
 using namespace std;

 int main(void)
 {
   int a = 1;
   a+=9;

   static_assert(x==10) //Error . 

   // static_assert는 컴파일 타임에 적용됨으로 애초에 컴파일이 안된다.
   // 그 이유는 a변수가 중간에 바뀔 수도 있기 떄문, static_assert를 사용하지 못함.


   const int b = 3;

   static_assert(b==3) //이건 가능하다 상수는 컴파일 타임에 적용된다.


   return 0;
 }
300x250

'Programing_Language > C++' 카테고리의 다른 글

스마트 포인터  (0) 2020.12.21
c++ 함수 포인터  (0) 2020.12.16
템플릿(Template) (2/2) (템플릿 특수화)  (0) 2020.12.14
템플릿(Template) (1/2)  (0) 2020.12.13
2차원 동적 배열 할당과 해제 (배열 vs 벡터)  (0) 2020.12.07

댓글