C++ assert() 详解
C++ assert 宏的应用方式将会在这篇文章中进行详解
相信对此有兴趣的朋友们应该可以根据我们介绍的内容充分掌握这方面的应用技巧。
作为一个经验丰富的编程人员来说,对于C++编程语言应该不会陌生的,实现它的应用可以帮助我们轻松的各种功能需求。
在这里我们会对C++ assert 宏的一些基本应用做一个详细介绍。
assert宏的原型定义在< assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,
原型定义:
#include < assert.h> void assert( int expression );
C++ assert()宏的作用是现计算表达式 expression ,如果其值为假(即为0),
那么它先向stderr打印一条出错信息,
然后通过调用 abort 来终止程序运行。
请看下面的程序清单badptr.c:
#include < stdio.h>
#include < assert.h>
#include < stdlib.h>
int main( void )
{
FILE *fp;
fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件
assert( fp ); //所以这里不会出错
fclose( fp );
fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败
assert( fp ); //所以这里出错
fclose( fp ); //程序永远都执行不到这里来
return 0;
}
使用C++ assert()宏的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
在调试结束后,可以通过在包含#include < assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,
示例代码如下:
#include < stdio.h>
#define NDEBUG
#include < assert.h>
C++ assert() 详解相关推荐
- 断言(assert)详解
目录 一.assert定义 二.用法总结与注意事项 四.以下是使用断言的几个原则: 一.assert定义 我一直以为 assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错 ...
- 单元测试中Assert详解-xUnit
前一篇:详谈单元测试-xUnit 简介 Assert 是基于代码的返回值.对象的最终状态.事件是否发生等情况来评估测试的结果.Assert 的结果可能是 Pass 或者 Fail.如果所有的 Asse ...
- assert()详解
assert()是什么? assert的头文件是assert.h 使用方式:assert( expression ); 当expression为FALSE时,程序将会终止,并且会弹出expressio ...
- php7 断言,PHP 断言(assert) 详解
PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao). 本文基于 PHP Version ...
- java 断言 assert 详解:断言开启、断言使用
java中的断言Assert的使用 一.背景 二.如何判断是否开启了断言 三.开启断言 四.断言的使用 方法一.assert <boolean表达式> 方法二.assert <boo ...
- php 断言,PHP 断言(assert) 详解
PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao). 本文基于 PHP Version ...
- 函数assert()详解
函数assert()详解: 断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式.预处理器产生测试该断言的代码,如果断言不为真, ...
- python的用途实例-python assert的用处示例详解
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
- python3 isinstance用法_对python中assert、isinstance的用法详解
1. assert 函数说明: Assert statements are a convenient way to insert debugging assertions into a program ...
最新文章
- 甲小姐对话稚晖君:深度学习并非AI的终点
- 200米外遥测心跳定身份,五角大楼全新黑科技,人脸伪装也没用
- MyGeneration【ui-原】
- Spring实现web开发的环境搭建
- 81.游戏项目-物体任意角度飞行和停止
- CometD:Java Web应用程序的Facebook类似聊天
- 机器视觉:药液质量检测
- python和c 的区别-Python和C区别该如何理解?如何适应这种区别?
- scala的list源码解密
- (原创) 心电图机静态心电自动分析算法介绍
- 2020-09-23 一个浙江商人立下的22条规矩
- 怎样解决Mac电脑键盘上的大写锁定键灯不亮?
- 台式计算机自动关机,电脑会自动关机是什么原因,台式电脑自动关机是什么原因...
- 最基本财务基础知识,财务知识基础来源
- python 安装scapy_安装scapy时出错
- 多测师软件测试肖sir_金融问题(1)
- Netgear WNDR3800 用 LAN口 替换 WAN口
- The type new ActionListener(){} must implement the inherited abstract method ActionListener.actionPe
- modbus调试团结_教学团结? 为教育者免费提供丰富的课程资源
- win7 64位下如何安装配置mysql