函数的入口校验时,assert(NULL!=p)与if(NULL!=p)的区别
2013-01-08 20:35
483 查看
不管什么时候,我们使用指针之前一定要确保指针是有效的,即要进行指针有效性检验。
问题:指针检验时,assert(NULL!=p)与if(NULL!=p)的区别?
答:assert是一个宏,包含在assert.h头文件中。命令assert(NULL!=p)的逻辑值为假时,程序终止运行,并提示错误;如果逻辑值为真,则继续运行后面的代码。assert这个宏仅仅在Debug版本上起作用,在Release版本中被编译器完成优化掉。(所以assert这个宏只是帮助我们调试代码的,它的作用是:让用户在调试函数的时候把错误排除掉,而不是等待Release之后。assert可以帮助定位错误,而不是排除错误)
if(NULL!=p)是在Release版本中检验指针的有效性。
问题:指针检验时,assert(NULL!=p)与if(NULL!=p)的区别?
答:assert是一个宏,包含在assert.h头文件中。命令assert(NULL!=p)的逻辑值为假时,程序终止运行,并提示错误;如果逻辑值为真,则继续运行后面的代码。assert这个宏仅仅在Debug版本上起作用,在Release版本中被编译器完成优化掉。(所以assert这个宏只是帮助我们调试代码的,它的作用是:让用户在调试函数的时候把错误排除掉,而不是等待Release之后。assert可以帮助定位错误,而不是排除错误)
if(NULL!=p)是在Release版本中检验指针的有效性。
相关文章推荐
- mysql ifnull()函数
- windows函数入口问题 UNREFERENCED_PARAMETER的用处 _tWinMain与wWinMain又有什么区别
- MySQL---IFNULL()函数用法
- 参数返回Oracle 常用函数:nvl/nullif/case when/wm_concat/replace
- php中函数 isset(), empty(), is_null() 的区别
- if(str == null || "".equals(null))和if(str == null || str.equals(""))有什么区别吗
- SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
- 2、jQuery的基本概念-必看-版本-入口函数- jq对象和dom对象区别
- php中empty(), is_null(), isset()函数区别
- Oracle常用函数:nvl/nullif/case when/wm_concat/replace
- 用 ISNULL(), NVL(), IFNULL() and COALESCE() 函数替换空值
- MySQL IFNULL()函数用法MySQL
- nvl()和ifnull()的区别
- SAP HANA SQL IFNULL和NULLIF用法与区别
- php中empty,is_null,isset三个函数的区别
- 用 ISNULL(), NVL(), IFNULL() and COALESCE() 函数替换空值
- sql------isnull 和 ifnull 函数
- 带您深入了解MySQL ifnull()函数
- MySQL中的isnull、ifnull和nullif函数用法
- if、assert区别