#define VERIFY(x) ASSERT(x)
// Полный assert со всеми украшениями
#define SUPERASSERT(x) ASSERTMACRO ( DA_SHOWSTACKTRACE | \
DA_SHOWMSGBOX | \
DA_SHOWODS , \
x ,)
// Макрос режимов
#define SETDIAGASSERTOPTIONS(x) SetDiagAssertOptions(x)
// Добавить макрос модуля
#define ADDDIAGASSERTMODULE(x) AddDiagAssertModule(x)
// Макрос трассировки TRACE
#ifdef _cplusplus
#define TRACE ::DiagOutput
#endif
#define TRACED(sz) DiagOutput(_T("Is"), _T(sz))
#define TRACEl(sz, pi) DiagOutput(_T(sz), pi)
#define TRACE2(sz, pi, p2) DiagOutput(_T(sz), pi, p2)
#define TRACE3(sz, pi, p2, p3) DiagOutput(_T(sz), pi, p2, p3)
#else // !_DEBUG
/*/////////////////////////////////////////
_DEBUG !!HE!! определен
//////////////////////////////////////////*/
#define ASSERTMACRO(a,x)
#define ASSERT(x)
#define VERIFY(x) ((void)(x))
#define SUPERASSERT(x)
#define SETDIAGASSERTOPTIONS(x)
#define ADDDIAGASSERTMODULE(x)
#ifdef _cplusplus
//inline void TraceOutput(LPCTSTR, ...) { }
#define TRACE (void)0
#endif
#define TRACED(fmt)
#define TRACE1(fmt,argl)
#define TRACE2(fmt,argl,arg2)
#define TRACE3(fmt,argl,arg2,arg3)
#endif // _DEBUG
#ifdef _cplusplus
}
#endif //_cplusplus
#endif // _DIAGASSERT_H
С помощью программы SUPERASSERT можно автоматически переадресовывать все вызовы ASSERT и assert к своим функциям. Макросы _ASSERT и __ASSERTE не переадресовываются, чтобы не мешать другим работать с отладочной библиотекой времени выполнения. Не затрагиваются также макросы Visual Basic ASSERT_KINDOF и ASSERT_VALID. Для программ на Visual Basic нужно только включать в проект файл VBASSERTANDTRACE.BAS.
Используя макрос или функцию SUPERASSERT, вы автоматически получите трассу стека. Для макроса ASSERT трассировка стека по умолчанию выключена, т.