assert的陷阱
来源:互联网 发布:linux基础知识试题 编辑:程序博客网 时间:2024/04/30 11:12
【原文写于5 January 2007,注】
bool setValue(int & i) { i = 1; return true; }
…
int i = 0;
assert(setValue(i));
上边的代码,在debug版中能正常运行,但在release中,运行后i的值仍为0,setValue(i)没有执行
assert,包括MFC的ASSERT,在release中“形同虚设”,导致setValue(i)也虚设了
因此,使用assert要非常小心,只能assert简单的判断语句
要避免这样的问题还有一个办法,MFC提供VERIFY,VERIFY中的语句能够正常执行,只是不会检查值是否true。
C runtime library中没找到类似的功能
from MSDN:
In the release version of MFC, VERIFY evaluates the expression but does not print or interrupt the program. For example, if the expression is a function call, the call will be made
- assert的陷阱
- assert断言的陷阱
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- Java陷阱之assert关键字
- 【java】Java陷阱之assert关键字
- '\'的陷阱
- QuickTime电影(Movie)
- 简历注意事项-程序员面试宝典
- 求职历程(停止更新)
- MySQL调优-编译篇
- MySQL调优-变量篇
- assert的陷阱
- ORACLE UPDATE 语句语法与性能分析的一点看法
- 全国城市省份对应的二级下拉列表框
- 正则表达式全攻略(一)
- vs2005标准控件GridView中Combobox的数据绑定
- 限制文本输入框textarea最大输入字符的js
- UNIX系统管理:文件系统布局
- 关于“过劳死”的法律探讨
- 连接各种数据库的连接字符串(java)