类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
我在MFC下写程序, 我发现在afx.h中有这样的定义:
#define VERIFY(f)
但我在用Release编译的时候,却发现用这个宏,却得到不同的结果, 很是不解.
既然有这样的定义, 为什么它们两个不一样呢.
请同志们帮我看一下, 很是诧异.
谢谢.
网友回答:
但我在用Release编译的时候,却发现用这个宏,却得到不同的结果
=======
你这句话什么意思?我也不解,能不能说清楚一点???
ASSERT只在debug下有效。VERIFY在Release下也有效
Release时此宏没有作用。
#ifdef _DEBUG
#define VERIFY(f) ASSERT(f)
...
#else
#define VERIFY(f) ((void)(f))
...
#endif
在Debug版下,VERIFY就等于ASSERT。它们的区别在Release版下:
Release版下,ASSERT;整句都不被编译,也就是说expression语句在Release版下不会计算,如果你在里面有像i++等等之类的话,Release版与Debug版就会有不同的执行结果;
VERIFY;在Release版下则相当于expression;也就是说VERIFY的作用被去除,但expression语句仍被计算。