在c++11之前就已经有了断言,但是不是静态断言。
断言
断言是一种编程中常用的手段。在通常情况下,断言就是将一个返回值总是需要为真的判断表达式放在语句中,用于排除在设计的逻辑上不应该产生的情况。
一个函数总需要输入在一定的范围内的参数,那么程序员就可以对该参数使用断言,以迫使在该参数发生异常的时候程序退出,从而避免程序陷入逻辑的混乱。
从一些意义上讲,断言并不是正常程序所必需的,不过对于程序调试来说,通常断言能够帮助程序开发者快速定位那些违反了某些前提条件的程序错误。
如果我们要在C++程序中使用断言,需要在程序中包含头文件或,头文件中为我们提供了 assert 宏,用于在运行时进行断言。
举例说明:下面的代码将创建一个数组,但是如果数组的size小于等于0,这个数组将无法被创建,那么用assert捕捉中断程序。- #include <iostream>
- #include <cassert>
- using namespace std;
- char* createArray(int size) { //创建一个指定size大小的char类型数组
- assert(size > 0); //通过断言判断数组大小是否大于0 必须大于0,否则程序中断
- char* array = new char[size];
- return array;
- }
- int main() {
- char* buf = createArray(10);
- system("pause");
- return 0;
- }
复制代码 在程序的第6行,使用了断言assert(expression) ,这是一个宏,它的参数是一个表达式,这个表达式通常返回一个布尔类型的值,并且要求表达式必须为 true 程序才能继续向下执行,否则会直接中断。
如果createArray参数size>0 , 程序正常运行直到结束。
如果createArray参数size |