1
2
断言(assertion)用带断言信息(程序, 模块, assertion行)的对话框执行. 对话框有3个按钮: "Break", "Repeat" ("Debug"), and "Continue" ("Ignore"). "Break" 结束程序, "Continue" 忽略断言, 最有用的是"Repeat"按钮. 按下它在断言的地方打开源代码编辑器. 在这里你可以测试所有的变量值并明白哪里出了问题。
例如:ASSERT(pPointer);ASSERT(n>0 && n<100);ASSERT(0);
ASSERT在执行简单验证时很有用,但对于C++对象,特别是由CObject派生的对象,则有更好的方法ASSERT_VALID来实现类似操作。作为一般规则,我们应在开始使用每一个对象之前检查数据讹误,
ASSERT_VALID宏使得对CObject的派生类实现该操作非常简单。
例如:ASSERT_VALID(this);ASSERT_VALID(pView);
VERIFY()
TRACE()
? 这三个宏在 Release 版本中都不会产生任何实质性的影响,它们是否起作用取决于是否定义了预定义了宏 _DEBUG。这是对 Microsoft Visual C++ 而言,在其它的编译器中可能其它不同的宏。
常用用法:
为了控制传进的指针:
void SomeFun(SomeType* pPointer)
{
}
你可以在"switch" 和 "if"操作中捕获奇怪的值
例如:
switch(nRGBColors){
}
if(nWaterTemp >=0 && nWaterTemp < 50){
}
else if(nWaterTemp >= 50 && nWaterTemp <= 100){
}
else{
}
对值的断言:
ASSERT(nSomeValue >= MinValue and nSomeValue <= MaxValue);
ASSERT(nOtherValue != 0);
可爱的 ASSERT 错误
ASSERT( m_MyWnd.Create() );
呕! 这是一个可怕的错误! 程序在调试版中正常
本文详细介绍了ASSERT与VERIFY宏的功能及其在Debug与Release模式下的行为差异。此外,还探讨了TRACE宏的作用,并提供了多种实用的代码示例,帮助开发者更好地理解和应用这些宏。
7927

被折叠的 条评论
为什么被折叠?



