assert.h

简介

assert.h 常用于防御式编程。防御式编程是提高软件质量技术的有益辅助手段。防御式编程的主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。

断言 assert 就是声明某种东西为真,该函数多用于调试。

宏函数

assert

  • 原型:void assert (int expression);

  • 说明:aserrt 是一个宏而非函数,实际并不具有函数原型。当它被执行时,判断 expression 的真假,如果为假,它就向标准错误打印一条诊断信息并终止程序。当消除所有预期错误后,可以通过 #define NDEBUG 消除所有断言。

  • 返回值:无。

  • 实例:

#include <stdio.h>
#include <assert.h>//#define NDEBUG        //定义后,预处理器将丢弃所有 assert 函数。void dialog(int *p){assert( p != NULL );printf("%d", *p);
}int main(){int a = 10;int *pa = NULL, *pb = NULL;pa = &a;dialog(pa);dialog(pb);return 0;
}

控制台会输出:

> Assertion failed: p != NULL, file c:\\...\\....\\...\test.c, line 9

assert.h 详解相关推荐

  1. ASSERT(0) 详解

     ASSERT(0) 详解 1.使用方法 在开发过程中我们可以假设只要程序运行正确,某一条件肯定成立.若不成立,那么我们可以断言程序肯定出错.在这种情况下我们可要利用ASSERT来设定断 言.ASSE ...

  2. free -h 详解

    1.命令 free -h 2.参数详解 total: 内存总数 used: 已经使用内存数 free: 完全空闲内存 shared: 多个进程共享的内存 buffers: 用于块设备数据缓冲,记录文件 ...

  3. C语言math.h详解

    math.h常用函数详解 1. 取绝对值 double fabs(double a); 对a取绝对值 2.取整与取余 int ceil (double a); 取上整(里面可以填整数也能填小数,整数返 ...

  4. 断言ASSERT使用详解

    一.assert的定义 原以为assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错"在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert() ...

  5. windows.h 详解

    参考windows.h解构 刚开头的一段注释是对该头文件的描述: /*++ BUILD Version: 0001 Increment this if a change has global effe ...

  6. windows.h详解

    参考 http://blog.csdn.net/fengningning/article/details/2306650?locationNum=1&fps=1 windows.h解构 刚开头 ...

  7. assert.notStrictEqual()详解

    严格不相等测试,由不全等运算符确定(===). const assert = require('assert');assert.notStrictEqual(1, 2);// OKassert.not ...

  8. C/C++—— #include“stdafx.h”详解

    转自:http://blog.csdn.net/qingkong8832/article/details/6695123 1,用VS2008新建项目,选择[Win32]-[Win32控制台应用程序]- ...

  9. CGGeometry.h详解

    本文转载至:http://blog.csdn.net/chengyingzhilian/article/details/7894195 这些是在CGGeometry.h里的 CGPoint.CGSiz ...

最新文章

  1. 应用程序启动器 标记为信任_为什么您今天不能信任应用程序-以及如何解决它...
  2. 微信公众平台开发(102) 模板消息
  3. python3.6.8卸载_Mac 卸载 彻底删除 自己下载的 python 3
  4. 【机器学习】快速入门机器学习
  5. 如何绘制caffe网络训练曲线
  6. java调用百度推送详解_Java 以 Post 方式实现百度 Sitemap 实时推送
  7. leetcode429. N 叉树的层序遍历(层序遍历05)
  8. Artifact到底是什么
  9. Tomcat、JDK 历史版本下载地址
  10. 工作382-vant弹框不能直接用
  11. C#绘图工具之Move
  12. python列表元组_Python列表元组操作
  13. Linux 的字符串截取很有用。有八种方法。
  14. html 常用button事件
  15. java的json解析工具_json在java中的几种解析工具的使用
  16. 可以在手机预览ps设计稿的软件
  17. 双边滤波(Bilateral Filtering)
  18. 2021水利水电安全员考试每日一练单选题库
  19. java实现邮箱推送
  20. 从其他地方复制过来的文字中间有空格怎么删除?

热门文章

  1. 操作系统学习笔记:多媒体系统
  2. 人工智能是不是走错了方向?
  3. 爬取服务器public文件夹,数据采集任务——爬取四川大学公共管理学院主页新闻实验报告...
  4. AGV小车典型设计算法及应用
  5. 51单片机 | ADC模数转换实验
  6. Linux系统: 第六章 Linux存储管理1
  7. 单片机简单应用系列二
  8. MAYLAND HOME官网上线 | LTD家居家装行业案例分享
  9. 总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)
  10. 国人的惯性思维,你中招了么?