assert
前言
我们在使用代码时,为了节省时间,经常进行代码的复用,那么如何保证别人在使用我们代码时可以达到预想的结果,加注释可能是一种办法,但一般都可以想到在我的函数体部分加入限制条件,但是今天我们我们介绍一种更普遍的方法,用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
会出现以下结果
这就可以提醒使用者输入发生了错误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix