1.断言:运行时与预处理时
断言的作用:用于调试,排除在设计上的逻辑上的缺陷而不应该产生的情况。
使用:<cassert>或者<assert.h>头文件中为程序员提供了assert宏,用于运行时断言。断言assert宏只有在程序运行时起作用,而#error只在编译器预处理时才能起断言的作用。
2.静态断言与static_assert
-
静态断言:
- 概念:在编译事情进行的断言,即为静态断言
- 实现:Boost内置的BOOST_STATIC_ASSERT断言机制
-
static_assert
使用:static_assert断言接手两个参数,,一个是断言表达式,表达式返回一个bool值,一个是警告信息,他通常是一个字符串。 使用范围:可以用于任何的名字空间 注意点:断言表达式必须是可以计算的表达式(常量表达式),使用变量会导致报错
3.noexcept修饰符与noexcept操作符
noexcept修饰符有两种形式:一种是简单的在函数声明中加上noexcept,另一种是可以接受一个常量表达式作为参数.
void excpt_func() noexcept;第一种
void excpt_func() noexcept(常量表达式);第二种,常量表达式的结果会转化为bool类型的值,true就不会抛出异常,否则可能抛出异常。