C的assert宏(它是个宏,而不是函数)主要是用于debug版本的,而不是最终版,它的好处很明显,就是捕获程序运行出错的地方,会指示出错的位置,方便查找错误。
如下例子
#i nclude <iostream>
#i nclude <cassert>
using namespace std;
void kk(char* st)
{
     assert(NULL != st); // 仅仅加入了这一行断言
     cout << st << endl;
     return ;
}
int main()
{  
    char *str = "yao";
    kk(str);
    str = NULL;
    kk(str);
    getchar();
    return 0;
}
以上代码将会出现如下信息(当然第二行起的信息根据运行程序所在的位置而定)
yao
Assertion failed: NULL != st, file C:\Documents and Settings\roof\桌面\我的地盘\暂存\test\test1.cpp, line 6

从输出可以看出,如果没有用assert,那程序就会马上非法退出,而没有任何提示信息。
assert的参数是一个布尔表达式,如果该表达式值为0,则程序被迫退出,且在终端输出相关信息,这一点在debug时是很有用的^_^特别是在include很多文件的时候。
(以上程序是用VC6.0编译运行的结果)