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 |
댓글