阿q的精神在当今的体现:C/C++中assert的用法 : 陈志伟博客

来源:百度文库 编辑:九乡新闻网 时间:2024/07/14 00:40:07

C/C++中assert的用法

2010-12-17 by zhiwei  

3 Comments

assert宏能测试传入表达式的真假值,当表达式为真(true),则不会有任何反应;当表达式为假(false),则函数将输出错误信息,并中断程序的执行。

assert宏可以用来判断某表达式的真假值,并在程序执行的过程中实时响应错误信息,因此在程序开发的过程中,常常被用来作程序纠错的工具,当程序开发完成,只需要在加载头文件前面,利用#define指令定义NDEBUG这个关键字,则所有assert都会失效,源程序不需做任何修改。

当传入的表达式为真,则assert不会有任何响应;当表达式为假时,assert函数会显示出发生错误的表达式、源代码文件名以及发生错误的程序代码行数,并调用abort函数,结束程序执行。

今天在群里讨论了一下关于assert用法的问题,自己现在算是明白了。

代码如下:

1            2            3            4            5            6            7            8            9            10            
int main()            {            int i=0;            while(i!=9)            {            i+=2;            assert(i++);            }            return 0;            }

问,这个循环了多少次?

注意:assert is designed to capture programming errors, not user or running errors。所以不要滥用assert。诸如assert(i++)之类的用法毫无意义。

关于assert的说明在这里:http://www.cplusplus.com/reference/clibrary/cassert/assert/