_STATIC_ASSERT
宏
在编译时计算表达式,如果结果为 FALSE
,则将生成错误。
语法
_STATIC_ASSERT(
booleanExpression
);
参数
booleanExpression
计算结果为零 (TRUE
) 或不为零 (FALSE
) 的表达式(包括指针)。
备注
此宏类似于 _ASSERT
和 _ASSERTE
宏,但会在编译时而不是运行时计算 booleanExpression
。 如果将 booleanExpression
计算为 FALSE
(0),则会生成编译器错误 C2466。
示例
在此示例中,我们将检查 sizeof
的 int
是否大于或等于 2 字节以及 sizeof
的 long
是否为 1 字节。 该程序将不会进行编译,并会生成编译器错误 C2466,因为 long
大于 1 字节。
// 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> |