当前位置:嗨网首页>书籍在线阅读

32-断言_assert.h

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

B.5.1 断言: assert.h

assert.h 头文件中把 assert() 定义为一个宏。在包含 assert.h 头文件之前定义宏标识符 NDEBUG ,可以禁用 assert() 宏。通常用一个关系表达式或逻辑表达式作为 assert() 的参数,如果运行正常,那么程序在执行到该点时,作为参数的表达式应该为真。表B.5.1描述了 assert() 宏。

表B.5.1 断言宏

| 原型 | 描述 | | :----- | :----- | :----- | :----- | | void assert(int exprs); | 如果 exprs1 (或真),宏什么也不做。如果 exprs0 (或假), assert() 就显示该表达式和其所在的行号和文件名。然后, assert() 调用 abort() |

C11新增了 static_assert 宏,展开为 _Static_assert_Static_assert 是一个关键字,被认为是一种声明形式。它以这种方式提供一个编译时检查:

_Static_assert( 常量表达式,字符串字面量);

如果对常量表达式求值为 0 ,编译器会给出一条包含字符串字面量的错误消息;否则,没有任何效果。