_STATIC_ASSERT 매크로
컴파일 시간에 식을 계산하고 결과가 FALSE일 때 에러를 생성합니다.
_STATIC_ASSERT(
booleanExpression
);
매개 변수
- booleanExpression
0이 아닌 값(TRUE) 또는 0(FALSE)으로 계산된 식(포인터 포함)입니다.
설명
이 매크로는 booleanExpression이 런타임 시간 대신 컴파일 시간에 계산된 것을 제외하고 _ASSERT and _ASSERTE macros와 비슷합니다. booleanExpression가 FALSE(0)으로 계산했을 경우, 컴파일러 오류 C2466이 생성됩니다.
예제
이 예에서, int의 sizeof값이 2바이트 이상인지의 여부와 long의 sizeof값이 1바이트인지의 여부를 검사합니다. long가 1바이트보다 크기 때문에, 프로그램은 컴파일되지 않고 컴파일러 오류 C2466를 생성할 것입니다.
// 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> |
해당 .NET Framework 항목
System::Diagnostics::Debug:: 어설션