断言(assert)的用法
assert,是个宏;
其作用可描述为:
if(假设成立)
{
程序正常运行;
}
else
{
报错&&终止程序!(避免由程序运行引起更大的错误)
}
assert 宏的原型定义在 assert.h 中,其作用是如果它的条件返回错误,则终止程序执行。
void assert( int expression );
assert 的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行。
使用 assert 的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
在调试结束后,可以通过在包含 #include 的语句之前插入 #define NDEBUG 来禁用 assert 调用,如下:
#include
#define NDEBUG
#include
新建一个win32控制台程序;生成,若出现下图错误,LNK1123,
如下图,嵌入清单,设置为否即可;
如果assert(1),运行如下,没有任何情况发生;
assert(0)则如下,会打印出错消息,并弹出 中止-重试-忽略 的对话框;
// astdemo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <assert.h>
int _tmain(int argc, _TCHAR* argv[])
{
assert(0);
getchar();
return 0;
}