静态断言
语法
_Static_assert ( 表达式 , 消息 )
|
(C11 起) | ||||||||
_Static_assert ( 表达式 )
|
(C2x 起) | ||||||||
表达式 | - | 任何整数常量表达式 |
消息 | - | 任何字符串字面量 |
此关键词亦可用作便利宏 static_assert ,宏于头文件 <assert.h>
可用。
解释
在编译时求值该常量表达式并将它与零比较。若它比较等于零,则发生编译错误,而若提供 消息 ,则编译器必须将它作为错误消息的一部分显示(除了不要求显示基本源码字符集以外的字符)。
否则,若 表达式 不等于零,则什么都不发生;不生成代码。
关键词
示例
运行此代码
#include <assert.h> int main(void) { // 测试数学是否正常工作 static_assert(2 + 2 == 4, "Whoa dude!"); // 或 _Static_assert(... // 这会在编译时产生错误。 static_assert(sizeof(int) < sizeof(char), "this program requires that int is less than char"); }
引用
- C11 standard (ISO/IEC 9899:2011):
- 6.7.10 Static assertions (p: 145)
- 7.2 Diagnostics <assert.h> (p: 186-187)
参阅
若用户指定的条件非true,则异常终止程序。可以在发行版本禁用。 (宏函数) |