当前位置:网站首页>C语言——断言assert的使用
C语言——断言assert的使用
2022-08-02 14:02:00 【iccoke】
前言
我们在使用代码时,为了节省时间,经常进行代码的复用,那么如何保证别人在使用我们代码时可以达到预想的结果,加注释可能是一种办法,但一般都可以想到在我的函数体部分加入限制条件,但是今天我们我们介绍一种更普遍的方法,用assert断言来实现我们的想法。
在这里我们用一个增加数组元素的函数为例
void AddValue(int* arr, int value, int len, int index, int size){
if (arr != NULL && len > 0 && index < len && size < len) {
//移动数据
for (int i = size - 1; i >= index; i--) {
arr[i + 1] = arr[i];
}
//插入元素
arr[index] = value;
}
}
这我们可以看到,只有满足if中条件才能继续执行以下代码
我们再用断言来更改
void AddValue(int* arr, int value, int len, int index, int size) {
assert(arr != NULL && len > 0 && index < len&& size < len);
//移动数据
for (int i = size - 1; i >= index; i--) {
arr[i + 1] = arr[i];
}
//插入元素
arr[index] = value;
}
int main() {
int arr[10] = { 1,2,3 };
int len = sizeof(arr) / sizeof(arr[0]);
AddValue(arr, 0, len, 0, 6);
return 0;
}
要注意的是断言如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行,其次使用时应加上头文件#include<assert.h>
比如我们在这里将len输入为-1
会出现以下结果
这就可以提醒使用者输入发生了错误
边栏推荐
猜你喜欢
跑yolov5又出啥问题了(1)p,r,map全部为0
The specific operation process of cloud GPU (Hengyuan cloud) training
Unit 5 Hold Status
瑞吉外卖笔记——第10讲Swagger
paddleocr window10 first experience
Unit 15 Paging, Filtering
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
云GPU(恒源云)训练的具体操作流程
chapter7
c语言三子棋详解!!! (电脑智能下棋)(附上完整代码)
随机推荐
[ROS] Introduction to common tools in ROS (to be continued)
[ROS](06)ROS通信 —— 话题(Topic)通信
Linux: CentOS 7 install MySQL5.7
【ROS】工控机的软件包不编译
Basic operations of 8583 sequential stack
chapter7
Flask项目的完整创建 七牛云与容联云
云GPU(恒源云)训练的具体操作流程
yolov5,yolov4,yolov3乱七八糟的
The IDEA of packaged jar package
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
动手学ocr(一)
Steps to connect the virtual machine with xshell_establish a network connection between the host and the vm virtual machine
Unit 7 ORM table relationships and operations
paddle window10环境下使用conda安装
【c】小游戏---扫雷雏形
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id ‘c
PHP open source customer service system _ online customer service source code PHP
Raft协议图解,缺陷以及优化
STM32(F407)—— 堆栈