_STATIC_ASSERT宏

,该结果是 FALSE时,请计算表达式在编译时并生成错误。

_STATIC_ASSERT(
    booleanExpression
);

参数

  • booleanExpression
    计算为非零的表达式 (包括指针) (TRUE) 或 0 (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

.NET Framework 等效项

系统:: 诊断:: 调试:: 断言

请参见

参考

_ASSERT, _ASSERTE宏

其他资源

按字母的函数引用