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 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

jQuery操作Select

jQuery是如何控制和操作select的。先看下面的html代码 <select id="test"> <option value="1">选项一<optio...

1907
来自专栏编程

AngularJS中使用表单输入的应用设计

在Angular中使用表单元素非常方便。正如我们在前面几个例子中看到的,你可以使用ng-model属性把元素绑定到你的模型属性上。这一机制对于所有标准的表单元素...

1616
来自专栏python3

pymysql--插入300万数据

        (2)使用python协程(遇到I/O操作就切换任务,无需等待--提高效率)

602
来自专栏北京马哥教育

sed的基本用法详解

在Linux的世界中,有着一个文本三剑客的称呼,它们分别代表grep(文本过滤),sed(流编辑器),awk(gawk)(报告生成器)。 它们是强大的文本处...

2596
来自专栏高爽的专栏

HTML锚点

        以前只是知道有锚点这么个东西,一直没有用到,昨天做毕设用到了锚点,现在总结一下控制锚点的几种情况:         1. 在同一页面中 <a n...

1700
来自专栏IMWeb前端团队

简单而强大的swig.js

本文作者:IMWeb json 原文出处:IMWeb社区 未经同意,禁止转载 swig的简单介绍 swig是JS模板引擎,它有如下特点: 根据路劲渲染...

2159
来自专栏我是攻城师

Elasticsearch如何动态维护一个不可变的倒排索引

3549
来自专栏Django Scrapy

mysql相关命令

安装 在ubuntu 14.04 x64下 1 安装 # 安装服务端 (需要中途设置root密码) sudo apt-get install mysql-ser...

3157
来自专栏柠檬先生

jquery mobile 移动web(5)

有序列表   <div data-role="content">     <ol data-role="listview" data-theme="...

1905
来自专栏Python小屋

Python基本输出函数print()用法小结

Python内置函数print()是基本输出函数,可以使用help()函数查看其详细用法和参数含义: >>> help(print) Help on built...

2897

扫描关注云+社区