_STATIC_ASSERT

在编译时计算表达式,如果结果为 FALSE,则将生成错误。

语法

_STATIC_ASSERT(
    booleanExpression
);

参数

booleanExpression
计算结果为零 (TRUE) 或不为零 (FALSE) 的表达式(包括指针)。

备注

此宏类似于 _ASSERT_ASSERTE,但会在编译时而不是运行时计算 booleanExpression。 如果将 booleanExpression 计算为 FALSE (0),则会生成编译器错误 C2466

示例

在此示例中,我们将检查 sizeofint 是否大于或等于 2 字节以及 sizeoflong 是否为 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>

另请参阅

按字母顺序显示的函数参考
_ASSERT_ASSERTE_ASSERT_EXPR