VERIFY 和 ATLVERIFY 有什么区别
What is the difference between VERIFY and ATLVERIFY
C++ 宏 VERIFY() 和 ATLVERIFY() 有什么区别?哪个更适合用于 COM 对象?
报告错误的方式有些不同。 ATLVERIFY
定义为
#ifndef ATLVERIFY
#ifdef _DEBUG
#define ATLVERIFY(expr) ATLASSERT(expr)
#else
#define ATLVERIFY(expr) (expr)
#endif // DEBUG
#endif // ATLVERIFY
而ATLASSERT
是
#ifndef ATLASSERT
#define ATLASSERT(expr) _ASSERTE(expr)
#endif // ATLASSERT
所以它在 _ASSERTE
中结束(参见 https://msdn.microsoft.com/en-us/library/ezb1wyez.aspx )
而 VERIFY
是
#ifdef _DEBUG
#define VERIFY(f) ASSERT(f)
#else // _DEBUG
#define VERIFY(f) ((void)(f))
#endif // !_DEBUG
所以它在 ASSERT
中结束(参见 https://msdn.microsoft.com/en-us/library/aa297139(v=vs.60).aspx)
C++ 宏 VERIFY() 和 ATLVERIFY() 有什么区别?哪个更适合用于 COM 对象?
报告错误的方式有些不同。 ATLVERIFY
定义为
#ifndef ATLVERIFY
#ifdef _DEBUG
#define ATLVERIFY(expr) ATLASSERT(expr)
#else
#define ATLVERIFY(expr) (expr)
#endif // DEBUG
#endif // ATLVERIFY
而ATLASSERT
是
#ifndef ATLASSERT
#define ATLASSERT(expr) _ASSERTE(expr)
#endif // ATLASSERT
所以它在 _ASSERTE
中结束(参见 https://msdn.microsoft.com/en-us/library/ezb1wyez.aspx )
而 VERIFY
是
#ifdef _DEBUG
#define VERIFY(f) ASSERT(f)
#else // _DEBUG
#define VERIFY(f) ((void)(f))
#endif // !_DEBUG
所以它在 ASSERT
中结束(参见 https://msdn.microsoft.com/en-us/library/aa297139(v=vs.60).aspx)