Namespaces
Variants

static_assert

From cppreference.net
< c ‎ | error
定义于头文件 <assert.h>
#define static_assert _Static_assert
(C11 起)
(C23 中移除)

此便捷宏展开为关键字 _Static_assert

目录

示例

#include <assert.h>
int main(void)
{
    static_assert(2 + 2 == 4, "2+2 isn't 4");   // 格式正确
    static_assert(sizeof(int) < sizeof(char),   // 编译时错误
                  "this program requires that int is less than char");
}

注释

自 C23 起, static_assert 本身已成为关键字,也可能作为预定义宏存在,因此 <assert.h> 不再提供该功能。

参考文献

  • C23 标准 (ISO/IEC 9899:2024):
  • 7.2/3 诊断 <assert.h> (页码: 待定)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.2/3 诊断 <assert.h> (页: 135)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.2/3 诊断 <assert.h> (页: 186)

参见

C++ 文档 关于 Static Assertion