assert测试

来源:互联网 发布:mac book 常用软件 编辑:程序博客网 时间:2024/06/01 08:58

#include "stdafx.h"
#include "assert.h"

int main(int argc, char* argv[])
{  
 int a = 0;
 assert(a!=0); 
 printf("Hello World!/n");
 return 0;
}

 

此时出现"Assertion failed: a!=0" 的错误!,如果把int a = 0; 改为int a =2;则没有这个错误。

 

断言assert是仅在Debug版本起作用的宏,用于检查"不应该"发生的情况。

assert不是一个仓促拼凑起来的宏。为了不在程序的Debug版本和Release版本引起差别,assert不应该产生任何副作用。所以assert不是函数,而是宏。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。如果程序在assert处终止了,并不是说含有该assert的函数有错误,而是调用者出了差错,assert可以帮助我们找到发生错误的原因。

1:使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。
2:在函数的入口处,使用断言检查参数的有效性(合法性)。
3:在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。
4:一般教科书都鼓励程序员们进行防错设计,但要记住这种编程风格可能会隐瞒错误。当进行防错设计时,如果“不可能发生”的事情的确发生了,则要使用断言进行报警。

 

后记:参照林锐《高质量C/C++编程指南》

原创粉丝点击