使用断言assert

之前有看过关于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-- > 0) { *pbTo++ = *pbFrom++; } return pvTo; }

 

原文地址:https://www.cnblogs.com/wiessharling/p/3260119.html