assert断言

assert断言

一·定义

assert.h头文件定义了宏assert(),用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行,这个宏常常被称为断言

二·格式

assert(p!=NULL);

三·具体执行

assert()宏接受一个表达式作为参数,若该表达式为真(返回值非零),assert()不会产生任何作用,程序继续运行,否则终止并给出报错信息提示(表达式的文件名和行号)

四·优点

优点1:能自动标识文件和出问题的行号

优点2:无需更改代码就能开启或关闭assert()的机制(如果已经确定程序没有问题,不需要再做断言,就在#include <assert.h>语句前定义一个宏NDEBUG以禁用assert断言)

例: 

#include <stdio.h>
#define NDEBUG
#include <assert.h>
size_t my_strlen(const char* str)
{
	size_t count = 0;
	assert(str != NULL);
	while (*str != '\0')
	{
		str++;
		count++;
	}
	return count;
		   
}

int main()
{
	char arr[] = "hello world";
	size_t len = my_strlen(arr);
	printf("%zd", len);
	return 0;
}

五·缺点

assert()引入了额外的检查,增加了程序的运行时间

可在Debug中使用,在Release版本中选择禁用assert

这样在Dubug版本有利于程序排查问题

在Release版本中不影响用户使用时程序的效率

使用assert()断言能提高代码的鲁棒性 

鲁棒性

“我会从程序的正确性和鲁棒性两方面检验代码的质量”

                                                                                                       ------田超(微软,SDE II)

鲁棒:Robust音译

鲁棒性指在异常和危险情况下系统生存的能力,鲁棒性越高,代码越抗打

例:计算机软件在输入错误,磁盘故障,网络过载或有意攻击情况下,能否不死机,不崩溃

此外,鲁棒性也指控制系统在一定(结构,大小)的参数摄动下,维持它某些性能的特性

所以,写出高质量的代码,从运用assert断言做起!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值