博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
assert、exit和return函数的介绍
阅读量:5252 次
发布时间:2019-06-14

本文共 862 字,大约阅读时间需要 2 分钟。

1 void assert(scalar expression);//诊断

  定义在头文件<assert.h>中。它使程序可以监控自己的行为,并尽早发现可能会产生的错误。

  assert有一个参数,这个参数必须是一种“断言”--一个我们认为正常情况下一定为真的表达式。每次执行assert函数,它都会检测其参数的值。如果参数的值不为0,assert什么也不做;如果参数的值为0,assert会向stderr(标准错误流,)写一条消息,并调用abort函数终止程序执行。

  例如:assert(0 <= i && i < 10); 如果i的值小于0或者大于等于10,程序在显出类似下面的消息后会终止:

Assertion failed: 0 <= i && i < 10, file demo.c line 109

  assert函数有一个缺点:因为它引入额外的检查,因此会增加程序的运行时间。(尤其在实时程序中,这么小的运行时间增加的可能也是无法接受的)。因此,许多程序员会在测试过程中使用assert,但当程序最终完成时就会禁止assert函数。禁止assert很容易,只需要在包含<assert.h>之前定义:NDEBUG即可:

1 #define NDBUG2 #include 

注意:不要在assert中使用有副作用的表达式(包括函数的调用)。一旦后来某天禁止了assert,这些表达式将不再会被求值。

2 void exit(int status);

exit:终止调用进程。

如果status是0/ EXIT_SUCCESS,表示正常退出;如果status是EXIT_FAILURE/非0值,表示异常退出。这个status是返回给操作系统(包括UNIX,Linux,和MS DOS)的,以供其他程序使用。

3 return xxx;

return 表示从被调函数返回到主调函数继续执行。

转载于:https://www.cnblogs.com/wojiaowoen/p/6798167.html

你可能感兴趣的文章
poj 2443 Set Operation 位运算
查看>>
java.lang.ExceptionInInitializerError
查看>>
Laravel使用Form(转载)
查看>>
easy UI
查看>>
Java static的使用 --Java笔记
查看>>
博客园自定义地址栏logo
查看>>
单例模式(Singleton)
查看>>
首次关于IIS配置遇到的一些问题
查看>>
201621123027 Week02-Java基本语法与类库
查看>>
SSH 密钥登录 SecureCRT
查看>>
Dubbo框架——整体架构
查看>>
简述KVM架构和Xen架构
查看>>
利用高级计划排程系统(APS)进行供应链的优化
查看>>
PHP SOCKE实现聊天系统
查看>>
课程总结
查看>>
vue 解决跨域
查看>>
单调队列 I
查看>>
第十八周个人作业
查看>>
Hadoop,Hbase启动及用web查看hadoop运行状态
查看>>
linux虚拟机CentOS 7完整安装流程截图
查看>>