조건이 부합되지 않으면 '컴파일'이 되지 않도록 해줌(기존의 assert는 런타임 중에 문제 발생하면 브레이크 포인트 걸음)
assert(name != NULL)
Ex) Student를 파일로 저장해서 관리하고 있었는데 어떤 이유에서 데이터 구조를 바꾸었다.
struct Student
{
char name[62];
char id[10];
int currrentSemester;
};
:
static_assert(sizeof(Student) == 74, "Student structure size mismatch");
- Student 구조체가 74 바이트가 아니면 컴파일 에러 발생
Ex) 클래스 버전을 바꾸는 경우
class Class
{
public:
const static int Version = 1;
};
:
static_assert(Class::Version > 1, "You need higher version than 1.")
Ex)
class Student
{
public:
static const int MAX_SCORES = 10;
int GetScore(int index);
private:
int mScores[MAX_SCORES];
};
static_assert(sizeof(mScores) / sizeof(mScores[0]) == MAX_SCORES, "The size of scores vector is not 10");