static_assert宏
概要:
宏static_assert在<assert.h>头文件中定义,会扩展为C语言关键词_Static_assert。
静态断言声明:
_Static_assert(constant-expression, string-literal);
描述:
该关键词也称为静态断言,用于在程序编译时测试断言。
常量表达式(constant-expression)应为整型常量表达式。如果常量表达式的值不等于0,断言将不起作用;反之如果常量表达式的值等于0,将生成一条包含字符串字面量(string-literal)的诊断信息,但非基本源字符集字符不要求出现在诊断信息中。
由于_Static_assert断言是在程序编译期间测试断言,不会生成目标代码,因此_Static_assert断言不会造成程序运行期间性能损失。
参数:
constant-expression
该参数为整型常量表达式,如果表达式的值为0,将触发断言;反之断言将不会被触发。
string-literal
该参数为字符串字面量,字符串字面量将包含在诊断信息中。
范例:
|
|
结果:
结果与具体实现有关。如果int类型数据的字节数等于4,第一个静态断言将被触发,生成包含字符串字面量的诊断信息,第二个静态断言不会被触发;否则第一个静态断言不会被触发,第二个静态断言将被触发。
相关内容:
assert | 程序调试时测试断言的宏。 |
NDEBUG | 影响宏assert行为的宏。 |