assert断言

assert是一个宏定义,其作用是如果它的条件返回错误,则终止程序执行,原型定义:

1 #include <assert.h>
2 void assert( int expression );

assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:

 1 #include <stdio.h>
 2 #include <assert.h>
 3 #include <stdlib.h>
 4 int main( void )
 5 {       
 6        FILE *fp;           
 7        fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件       
 8       assert( fp );                           //所以这里不会出错       fclose( fp );           
 9         fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败       
10        assert( fp );                           //所以这里出错       
11        fclose( fp );                           //程序永远都执行不到这里来               
12        return 0;
13 }

已放弃使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:

1 #include <stdio.h>
2 #define NDEBUG
3 #include <assert.h>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

nginx limit配置参数解读

本文主要解析一下ngx_http_core_module、ngx_http_limit_conn_module以及ngx_http_limit_req_modu...

1132
来自专栏专注 Java 基础分享

Struts2框架的基本使用(三)

     上篇 Struts2框架的基本使用(二)介绍了Action和result的相关配置操作,本篇接着介绍剩下的异常处理机制和Convention插件的使用...

2037
来自专栏Python小屋

Python标准库shutil中rmtree()使用回调函数

这段代码目的是删除包含只读文件的文件夹,主要演示回调函数的用法。 >>> import os >>> import stat >>> import shutil...

3279
来自专栏null的专栏

Linux C 编程——多线程

线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。与多进程相比,多进程具有多进程不具备的一些优点,其最重要的是:对于多线程来说,其能够比多进程更加节省...

2806
来自专栏专注 Java 基础分享

初识Hibernate之理解持久化类

     上一篇文章我们简单介绍了Hibernate相关的一些最基本的文件及其作用,并在最后完整的搭建了Hibernate的运行环境,成功的完成了与数据库的映射...

1818
来自专栏武军超python专栏

2018年8月25日多线程编程总结

PYTHON 本身也支持多任务处理,并且提供了如下的操作方式 多线程多任务处理机制   (比较常用) 多进程多任务处理机制   (不常用,大型项目开发或者系...

844
来自专栏瓜大三哥

HLS Lesson11-c/c++ testbench书写续2

scoreboard:比较待测模块的输出和参考数据;同时还要给出错误信息 通常情况下有两种方法去比较: 1. 使用if去比较 ? 2.使用系统函数去比较 ? C...

2308
来自专栏有趣的Python和你

用python偷懒Arcgis(地类编码转地类名称)excel数据python代码arcgis操作

823
来自专栏地方网络工作室的专栏

Shell 命令行统计 apache 网站日志访问IP以及IP归属地

Shell 命令行统计 apache 网站日志访问IP以及IP归属地 我的一个站点用 apache 服务跑着,积攒了很多的日志。我想用 shell 看看有哪些人...

1946
来自专栏Hongten

java多线程系列_join方法的使用(5)

在上面的例子中多次使用到了Thread类的join方法。我想大家可能已经猜出来join方法的功能是什么了。对,join方法的功能就是使异步执行的线程变成同步执行...

1003

扫码关注云+社区