ASSERT(0) 详解

1.使用方法

在开发过程中我们可以假设只要程序运行正确,某一条件肯定成立。若不成立,那么我们可以断言程序肯定出错。在这种情况下我们可要利用ASSERT来设定断 言。ASSERT宏的参数是一个逻辑表达式,在程序运行过程中,若该逻辑表达式为真,则不会发生任何动作;若此表达式为假,则系统弹出一个对话框警告你, 并停止程序的执行。同时要求你作出选择:取消、忽略和重试。若你选择取消,则系统将停止程序的运行;若你选择忽略,则系统将忽略该错误,并继续执行程序; 若你选择重试,则系统将重新计算该表达式,并激活调试器。同TRACE宏一样,ASSERT宏只对Debug版本的工程产生作用,在Release 版本的工程中,ASSERT宏将被忽略。

下面的示例显示如何使用ASSERT检查函数的返回值:

int x = SomeFunc(y);

ASSERT( x >= 0); // 如果x为负,则断言失败。

可将断言用于:

(1)可以使用断言语句捕捉逻辑错误。可以在程序逻辑必须为真的条件上设置断言。除非发生逻辑错误,否则断言对程序无任何影响。 (2)可以使用断言语句检查操作的结果。断言对于快速直观地检查不明显的操作结果最有价值。

(3)可以使用断言在代码中已处理了错误的点处测试错误类型。

通俗点,意思是预防性的错误检查,在认为不可能的执行到的情况下加一句ASSERT(0),如果运行到此,代码逻辑或条件就可能有问题。

assert是判定parameter是否为真,为假就报错。
0为假,所以assert(0)永远都报错。

ASSERT(0) 详解相关推荐

  1. android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解

    Android安装apk文件并适配Android 7.0详解 首先在AndroidManifest.xml文件,activity同级节点注册provider: android:name="a ...

  2. NEXT社区小课堂 | 第四课:dBFT 2.0详解 | 委托拜占庭容错:技术细节、挑战和前景...

    NEXT社区 | 小课堂 由于近期NEXT社区加入很多新的小伙伴,有在校大学生,有对区块链感兴趣的传统企业从业者.为了更方便.更系统的让NEXT社区的伙伴们了解NEO的技术知识,因此我们开设了小课堂, ...

  3. CentOS 8.1安装MySQL 8.0详解

    CentOS 8.1安装MySQL 8.0详解 引言 一.YUM在线安装 0.删除已安装的MySQL 1.添加MySQL Yum Repository 2.选择MySQL版本 3.安装MySQL 4. ...

  4. 百度细雨算法2.0详解,规避细雨算法解决方法

    在我们优化当中,特别是一些刚入门的seo人员,为了营销,为了转化,就在网站网页里面到处乱插广告,如标题多次出现核心关键词,网页里面到处穿插微信啊电话号码之类等,严重影响了用户搜索体验,因此百度发布了& ...

  5. android apk安装过程,Android安装apk文件并适配Android 7.0详解

    Android安装apk文件并适配Android 7.0详解 首先在AndroidManifest.xml文件,activity同级节点注册provider: android:name="a ...

  6. 30分钟学会EventBus3 0详解(二)(EventBus3 0的详细使用)(by星空武哥)

    转载声明原创地址:http://blog.csdn.net/lsyz0021/article/details/52094855 30分钟学会EventBus3.0详解(一)(引入和初始化EventBu ...

  7. 给 Android 开发者的 RxJava1.0 详解 (转载)

    作者:扔物线 HenCoder 给高级 Android 工程师的进阶指南: 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 A ...

  8. css sheet2.0,详解CSS3.0(Cascading Style Sheet) 层叠级联样式表

    CSS3.0(Cascading Style Sheet) 层叠级联样式表 快速入门: CSS01 h1 { color: red; } 标题一 CSS的三种导入方式: 行内样式(优先级最高,但不建议 ...

  9. SonarQube篇- CentOS7安装Sonarqube8.0详解

    一 原文链接 https://notebook.yasithab.com/centos/centos-7-install-sonarqube 二 操作详解 1. 安装配置 SonarQube 1.1. ...

最新文章

  1. 时间就是金钱!Windows 上必装的 10 款高效软件
  2. 下载vs2008 beta2的新方法
  3. c的开始,求最大数。
  4. windows下安装emscripten
  5. RPM包及其管理 rpm命令
  6. Linux vi编辑器常见命令的使用
  7. 小米MIX4发布会还有新品?小米全面屏电视PRO官宣
  8. 2014年Q1台湾域名总量涨幅增95.7% 净增1201个
  9. 数据库基础知识——互动百科
  10. Python爬虫实例(含代码)超详细教程
  11. win7安装visio2016需要通用CRT(KB2999226)
  12. php ssl证书安装,PHPWAMP如何开启SSL,Apache下如何安装ssl证书?配置ssl证书很简单...
  13. php判断手机浏览器,php判断是不是手机浏览器访问
  14. 液压缸、气缸、电动缸的参数对比
  15. ARP报文及其工作过程
  16. 43款设计师必备英文设计字体【书法类字体】
  17. 全栈修炼:如何从Web前端迈向全栈开发
  18. 把经纬度转换为Geohash(准确)
  19. Kafka手动补录数据
  20. 安装的客户端程序被360安全卫士当成病毒

热门文章

  1. python和什么语言类似_python与其他语言的对比
  2. Matrix(二维树状数组)入门第一题
  3. linux启动tomcat并查看启动日志
  4. IDEA代码自动换行
  5. IDEA中提示JAVA字符串常量过长
  6. python restful api_用Python语言写一个restful API
  7. Oracle执行计划稳固
  8. vue ---- 组件
  9. java反序列化的原理,java – 反序列化的工作原理?
  10. CENTOS7.8忘记ROOT密码,重置密码步骤