assert
各位大侠:
我所见过的assert基本被用来在函数开头判断传入参数的正确性。
例如:
#include <assert.h>
void test_assert(char* p)
{
assert(p!=NULL);
...
}
好像我见的assert基本都这种用法,在进入test_assert的时候,先判断传入的指针p是否为空,如果为空,则自动调用abort()终止程序。
请问assert还有其他的用法吗?
[解决办法]
在函数开始处检验传入参数的合法性
每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
不能使用改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使用程序在真正运行时遇到问题
assert和后面的语句应空一行,以形成逻辑和视觉上的一致感
[解决办法]
在开发过程中我们可以假设只要程序运行正确,某一条件肯定成立。如不成立,那么我们可以断言程序肯定出错。在这种情况下我们可以利用ASSERT来设定断言。ASSERT宏的参数是一个逻辑表达式,在程序运行过程中,若该逻辑表达式为真,则不会发生任何动作,若此表达式为假,系统将弹出一个对话框警告你,并停止程序的执行。同时要求你作出选择:Abort,Ignore, Retry。若你选择Abort,系统将停止程序的执行;若你选择Ignore 系统将忽略该错误,并继续执行程序;若你选择Retry ,系统将重新计算该表达式,并激活调试器。同TRACE宏一样,ASSERT宏只DEBUG版本中起作用,在RELEASE版本中ASSERT宏将被忽略
http://dev.csdn.net/article/72/72549.shtm
一般就这样用这个调试宏把.