问几个关于断言的问题
admin 发表于 2010-07-26 | 来源:互联网 | 阅读:
1. assert函数和ASSERT宏有什么区别?为什么我只能运行函数,宏的话就老失败?
2. assert failure到底是个什么错误?什么原因引起?
1. assert函数和ASSERT宏有什么区别?为什么我只能运行函数,宏的话就老失败?
2. assert failure到底是个什么错误?什么原因引起?
评论功能因故关闭!
请加入我们的QQ群一起参与讨论:群号59400482(500人超级群)
去看《编程精粹》吧,
正常情况下,你老婆是女人,你跟别人也是这样说的,当你老婆突然变成男人,就可以称为断言错误。
assert是C库函数,ASSERT是一个宏,很多SDK之类的都可能定义它,且有不同
1. assert函数和ASSERT宏有什么区别?为什么我只能运行函数,宏的话就老失败?assert是标准C++的东西,ASSERT是windows系统定义的宏。两者在参数上不同,打印信息也有区别。用起来区别不大。宏运行失败可能是没有包含相关头文件。2. assert failure到底是个什么错误?什么原因引起?在debug版本的程序中,可能使用了很多断言,为了快速定位bug。比如我在一段代码中,有一个“条件1”应该必然会成功,如果不成功,就是代码的问题,可能在距离这里很远的地方问题才爆发,那么定位起来就比较困难。如果加一个 assert(条件1),如果条件1不成立,就会弹出错误提示,就可以立刻知道是这里出了错误,方便定位。
assert是一个 ISO C89/C99 的宏定义http://www.opengroup.org/onlinepubs/009695399/functions/assert.html