static_assert

来自cppreference.com
< 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> 不再提供它。

引用

  • C17 标准(ISO/IEC 9899:2018):
  • 7.2/3 Diagnostics <assert.h> (第 135 页)
  • C11 标准(ISO/IEC 9899:2011):
  • 7.2/3 Diagnostics <assert.h> (第 186 页)

参阅