使用断言assert
2024-10-15 05:41:27
之前有看过关于Assert的书,但是不懂得如何去用,最近看别人写的代码有用这个断言(assert),今天自己动手看看如何使用断言。
断言(assert)的语义如下:如果表达式的值为0(假),则输出错误消息并终止程序的执行(一般还会出现提示对话框,说明在什么地方引发了assert);如果表达式为真,则不进行任何操作。因此断言失败就表明程序存在一个bug.
C++/C 的宏assert(expression)就是这样的断言,当表达式为假时,调用库函数abort()终止程序。
程序一般分为Debug版本和Release版本,前者用于内部调试,后者用于发行给用户使用。由于 assert(expression)的宏体全部被条件编译为伪指令#ifdef _DEBUG和#endif所包含,因此assert(expression)只在Debug版本里有效。
assert(expression)例子:
1. 在函数的入口处,建议使用断言来检查参数的有效性(合法性)
#define byte unsigned char
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
//使用断言,防止pvTo 和 pvFrom 为NULL
assert((pvTo != NULL)&&(pvFrom != NULL));
byte *pbTo = (byte*)pvTo;
byte *pbFrom = (byte*)pvFrom;
while(size-- > )
{
*pbTo++ = *pbFrom++;
}
return pvTo;
}
最新文章
- 如何在网页端启动WinForm 程序
- Regional Changchun Online--Alisha’s Party
- 详解android.mk-2016.01.18
- maven项目使用mybatis-generator自动生成代码
- UVa 1637 (概率) Double Patience
- 多线程与网络之JSON和XML数据的解析
- 五指CMS发布,主打高性能
- Android5.0之NavigationView的使用
- Android(java)学习笔记141:各种边距设置
- C#后台程序与HTML页面中JS方法互调
- Traveling
- 一步一步学EF系列【6、IOC 之AutoFac】
- TFboy养成记 tensor shape到底怎么说
- android AlarmManager讲解
- entity cannot be tracked
- 测者的测试技术手册:揭开java method的一个秘密--巨型函数
- 2018 省选 T1 一双木棋
- 如何在Android平台上使用USB Audio设备
- XSS事件(一)
- SpringBoot中使用mybatis-generator自动生产