程序语言中的「断言」

程序语言中的「断言」

概念

断言(assertion)是一种除错机制,用于验证代码是否符合编码人员的预期。编码人员在开发期间应该对函数的参数、代码中间执行结果合理地使用断言机制,确保程序的缺陷尽量在测试阶段被发现。

断言assert函数只能在测试阶段用,不能再release版本使用。那么我们可以用什么方法实现呢? 宏定义

在通常情况下,断言就是将一个返回值总是真(或者我们需要是真)的判别式放在语句中,用以排除在设计逻辑上不应该出现的情况。

通常来说,断言并不是正常程序所必需的,但对于程序调试来说,通常断言能够帮助开发者快速定位那些违反了某些前提条件的程序错误。在C++中,头文件提供了assert宏,提供运行时断言。

C++断言____Blue_H的博客-CSDN博客_c++断言

示例

示例1:

以下代码中对除数使用了断言,当除数为0时程序会报错。

/*test4.cpp*/
#include 
#include 
using namespace std;

double Sub(int dividend, int divisor) {
    assert(divisor != 0);  //断言,除数必须大于0
    return static_cast<double>(dividend) / static_cast<double>(divisor);
}

int main() {
    int a = 6, b = 3, c = 0;
    cout << Sub(b, c);
    return 0;
}

运行结果:

Assertion failed!

Program: G:\Code\test4.exe
File: test4.cpp, Line 6

Expression: divisor != 0

示例2:

/*test4.cpp*/

#include   //需要包含的头文件,release版本去掉,测试时使用
#include 
/* assert 的使用 */
#define DEBUG  // release 版本注释掉即可,测试版本定义
#ifdef DEBUG
#define ASSERT(f) assert(f)
#else
#define ASSERT(f) ((void)0)
#endif

void display(int n) {
    ASSERT(n > 0);
    printf("%u", n);
}

int main() {
    unsigned int x;
    scanf("%u", &x);
    display(x);
    return 0;
}

运行结果:

Assertion failed!

Program: G:\Code\test4.exe
File: test4.cpp, Line 14

Expression: n > 0

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