C语言中静态断言的使用
2024-08-25 11:37:47
编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作异常处理的高级形式,用于代码调试。
#define _CRT_SECURE_NO_WARNINGS //关闭安全监察
#include <stdio.h>
#include <stdlib.h>
#include <assert.h> //静态断言的头文件 void main()
{
double db1, db2; printf("输入被除数和除数:\n");
scanf("%lf%lf", &db1, &db2); assert(db2 != ); printf("%f/%f=%f\n", db1, db2, db1 / db2); system("pause");
}
如果除数输入不为0,则程序没有错误,正常运行:
如果输入除数为0,此时触发断言:
同时也可利用宏 NDEBUG 来打开或关闭断言:
#define _CRT_SECURE_NO_WARNINGS //关闭安全监察
#define NDEBUG //关闭静态断言 #include <stdio.h>
#include <stdlib.h>
#include <assert.h> //静态断言的头文件 void main()
{
double db1, db2; printf("输入被除数和除数:\n");
scanf("%lf%lf", &db1, &db2); assert(db2 != ); printf("%f/%f=%f\n", db1, db2, db1 / db2); system("pause");
}
定义宏 NDEBUG 后,断言关闭,输入除数为0,程序仍然可以执行:
最新文章
- 软件工程 speedsnail 冲刺1
- 分享php中四种webservice实现的简单架构方法及实例(转)
- pydev出现Project interpreter not specified(eclipse+pydev)
- C# 堆栈的数据结构 (二)
- jquery ajax 参数可以序列化
- Oracle 字段是多个值的字符串的查询处理
- 程序实现LayoutAnimationController
- Web Worker在WebKit中的实现机制
- linux下percona-toolkit工具包的安装和使用(超详细版)
- SQL-50 将employees表中的所有员工的last_name和first_name通过(&#39;)连接起来
- Android中使用ViewGroup.removeViews()时出现NullPointException解决方案
- Spring.profile配合Jenkins发布War包,实现开发、测试和生产环境的按需切换
- # 2017-2018-2 20155319『网络对抗技术』Exp4:恶意代码分析
- MySQL USING 和 HAVING 用法
- JS实现文本框和文本域获取焦点focus()时,光标在本文的末尾
- C#基础之接口
- post和updatebatch区别 delphi
- 学习webpack
- [loj#2566][BZOJ5333] [Sdoi2018]荣誉称号 树形dp
- Drupal启动过程
热门文章
- MyEclipse jQuery智能 提示
- IdentityHashMap
- NetCore Selfhost,IIShost,Windows Service Host详解(自宿主、宿主在IIS,宿主在Windows Service中)
- 字节流之文件输出流FileOutputStream
- python 生成器的理解和总结
- Navigator - BOM对象
- validate 不校验的解决办法
- LINUX下用C语言历遍目录 C语言列出目录 dirent.h在C/C++中的使用
- docker问题:docker端口映射错误
- dubbo 相关面试题 有用