zoukankan      html  css  js  c++  java
  • 使用断言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; }

     

  • 相关阅读:
    web service 入门实例
    ideal 创建web service项目
    win10上配置hadoop环境
    hadoop-----slaves集中管理与SSH免密登录
    关系的完整性
    关系数据库-----SQL标准语言
    mysql导入excel文件---打开文件失败
    CC2540中的电压检测
    C++ 中静态成员函数访问非静态成员变量的方法
    C 语言中的优先级
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3260119.html
Copyright © 2011-2022 走看看