C++断言

此课件及源代码来自B站up主:码农论坛,该文章仅作为本人学习笔记使用。

一、断言

断言(assertion)是一种常用的编程手段,用于排除程序中不应该出现的逻辑错误。

使用断言需要包含头文件,头文件中提供了带参数的宏assert,用于程序在运行时进行断言。

语法:assert(表达式);

断言就是判断(表达式)的值,如果为0(false),程序将调用abort()函数中止,如果为非0(true),程序继续执行。

断言可以提高程序的可读性,帮助程序员定位违反了某些前提条件的错误。

注意:

  1. 断言用于处理程序中不应该发生的错误,而非逻辑上可能会发生的错误。
  2. 不要把需要执行的代码放到断言的表达式中。
  3. 断言的代码一般放在函数/成员函数的第一行,表达式多为函数的形参。

示例:

#include 
#include               // 断言assert宏需要包含的头文件。
using  namespace std;

void  copydata(void *ptr1,void *ptr2)   // 把ptr2中的数据复制到ptr1中。
{
    assert(ptr1&&ptr2);  // 断言ptr1和ptr2都不会为空。
    cout << "继续执行复制数据的代码......\n";
}

int main()
{
    int ii=0,jj=0;
    copydata(&ii, &jj);  // 把ptr2中的数据复制到ptr1中。
}

二、C++11静态断言

assert宏是运行时断言,在程序运行的时候才能起作用。

C++11新增了静态断言static_assert,用于在编译时检查源代码。

使用静态断言不需要包含头文件。

语法:static_assert(常量表达式,提示信息);

注意:static_assert的第一个参数是常量表达式。而assert的表达式既可以是常量,也可以是变量。

你可能感兴趣的:(C++,c++,开发语言)