首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟关于 c语言 assert 宏的有关问题

2013-02-24 
小弟求助关于 c语言 assert 宏的问题void TextMessageBox(LPCTSTR lpText){assert(lpText ! NULL)Messag

小弟求助关于 c语言 assert 宏的问题
void TextMessageBox(LPCTSTR lpText)
{
assert(lpText != NULL);

MessageBox(NULL, lpText, NULL, MB_OK);
}
将级别跳到最高,提示错误warning C4365: “参数”: 从“long”转换到“unsigned int”,有符号/无符号不匹配

错误指到了assert(lpText != NULL);这一行
求解释 c C++ assert
[解决办法]
莫非是 lpText == NULL ,所以造成assert出错?
warning一般都没关系不用管的呀
[解决办法]
没看懂题目。
字面理解,不就是指针指空了么
[解决办法]
警告里面已经说了是“long”“unsigned int”不配配

看一下assert的声明

建议最好使用英文开发环境,呵呵呵
[解决办法]
lpText != NULL这两个类型不匹配,不能比较
[解决办法]
是人写的就有bug,这里谈不上bug,就是有点小瑕疵。

[解决办法]
显示类型转换

assert(lpText != (LPCTSTR)NULL);
[解决办法]
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

[解决办法]
assert((void*)lpText != (void*)NULL);
如果还有问题,就是assert定义里面的问题了。

[解决办法]
#define assert(_Expression) (void)( (!!(_Expression)) 
[解决办法]
 (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) ) 
根据你给的定义
assert(1)
展开成
(void)( (!!(1)) 
[解决办法]
 (_wassert(_CRT_WIDE("1"), _CRT_WIDE("tmp"), 2), 0) )

还能看到_CRT_WIDE和_wassert的定义么?

或者LZ自行预编译,看assert(1)展开成什么?

[解决办法]
好样的,对warning都不放过。

热点排行