assert(笔记)
来源:互联网 发布:中国人长相知乎 编辑:程序博客网 时间:2024/04/28 06:08
1、assert
是头文件assert.h
中的一个宏定义判断值为真,则当什么事都没发生过,继续往下执行,判断值为假,则报错退出程序:
代码中适当的地方使用断言(Assertion)可以有效地帮助我们测试程序。也许有人会问:我们用几个测试函数来测试binarysearch
,那么这几个测试函数又用什么来测试呢?在实际工作中我们要测试的代码绝不会像binarysearch
这么简单,而我们编写的测试函数往往都很简单,比较容易保证正确性,也就是用简单的、不容易出错的代码去测试复杂的、容易出错的代码。
测试代码只在开发和调试时有用,如果正式发布(Release)的软件也要运行这些测试代码就会严重影响性能了,如果在包含assert.h
之前定义一个NDEBUG
宏(表示No Debug),就可以禁用assert.h
中的assert
宏定义,这样代码中的所有assert
测试都不起作用了:
#define NDEBUG#include <stdio.h>#include <assert.h>...
注意NDEBUG
和我们以前使用的宏定义有点不同,例如#define N 20
将N
定义为20,在预处理时把代码中所有的标识符N
替换成20,而#define NDEBUG
把NDEBUG
定义为空,在预处理时把代码中所有的标识符NDEBUG
替换成空。这样的宏定义主要是为了用#ifdef
等预处理指示测试它定义过没有,而不是为了做替换,所以定义成什么值都无所谓,一般定义成空就足够了。
还有另一种办法,不必修改源文件,在编译命令行加上选项-DNDEBUG
就相当于在源文件开头定义了NDEBUG
宏。宏定义和预处理到第 21 章 预处理再详细解释,在第 4 节 “其它预处理特性”将给出assert.h
一种实现。
- assert(笔记)
- assert()
- assert()
- Assert()
- boost::assert学习笔记
- #python学习笔记#assert
- C语言学习笔记(3)assert的使用
- Nodejs学习笔记——Assert(断言)
- NodeJS学习系列课程笔记(NodeJs Assert断言测试)
- Python学习笔记(5)--断言assert的用法
- java中Assert学习笔记
- 断言函数assert()与ASSERT()
- ASSERT函数(转贴 )
- assert函数(断言)
- (inline)assert
- assert()用法
- assert()的用法
- Java断言(assert)
- web性能优化之- js自定义函数延迟执行 jquery插件
- Oracle11g修改RAC SCAN IP
- iconv: 未知 189 处的非法输入序列
- 字符串转换为HTML字符的方法
- 50种方法巧妙优化你的SQL Server数据库
- assert(笔记)
- linux c/c++ 让自己写的程序在后台运行
- EditText使用详解
- huge、far、near指针的说明
- 利用静态方法代替构造方法创建对象
- Chapter06-C/C++运行库
- 在同一个TextView中设置不同的字体风格
- install yum redhat 4
- Java将一段逗号分割的字符串转换成一个数组