win32 断言函数和转换到COFF期间失败错误

断言(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;
}

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/113706920