_STATIC_ASSERT
매크로
컴파일 시 식을 계산하고 결과가 FALSE
인 경우 오류를 생성합니다.
구문
_STATIC_ASSERT(
booleanExpression
);
매개 변수
booleanExpression
0이 아닌 값(TRUE
) 또는 0(FALSE
)으로 계산되는 식(포인터 포함)입니다.
설명
이 매크로는 _ASSERT
런타임이 아닌 컴파일 시간에 평가된다는 점을 booleanExpression
제외하고 매크로와 _ASSERTE
유사합니다. booleanExpression
이 FALSE
(0)로 계산되면 컴파일러 오류 C2466가 생성됩니다.
예시
이 예에서는 sizeof
의 int
값이 2바이트 이상인지의 여부와 sizeof
의 long
값이 1바이트인지 여부를 검사합니다. 프로그램은 컴파일되지 않으며 1 바이트보다 크므로 컴파일러 오류 C2466이 long
생성됩니다.
// crt__static_assert.c
#include <crtdbg.h>
#include <stdio.h>
_STATIC_ASSERT(sizeof(int) >= 2);
_STATIC_ASSERT(sizeof(long) == 1); // C2466
int main()
{
printf("I am sure that sizeof(int) will be >= 2: %d\n",
sizeof(int));
printf("I am not so sure that sizeof(long) == 1: %d\n",
sizeof(long));
}
요구 사항
매크로 | 필수 헤더 |
---|---|
_STATIC_ASSERT |
<crtdbg.h> |