查看vs 2013assert定义,如下:
#ifdef NDEBUG
#define assert(_Expression) ((void)0)
#else /* NDEBUG */
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
_CRTIMP void __cdecl _wassert(_In_z_ const wchar_t * _Message, _In_z_ const wchar_t *_File, _In_ unsigned _Line);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#define assert(_Expression) (void)( (!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) )
#endif /* NDEBUG */
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,
- 原型定义:
● #include <assert.h>
● void assert( int expression );
头文件定义了assert宏,引用了NDEBUG,后者未定义在该头文件内
2 代码解释:
#ifdef NDEBUG
#define assert(_Expres