📄 diagnosis.h
字号:
/*
* BREW Extension Library
* Copyright (c) 2003-2005 ANYSOFT.CN
* All Rights Reserved.
*/
/*!
@file
@brief [Diagnosis] 诊断模块
本模块提供了诊断用的各种宏和辅助函数,供调试版本程序使用
*/
#include <AEEStdLib.h>
#ifndef __BEL_DIAGNOSIS_H__
#define __BEL_DIAGNOSIS_H__
/*!
@defgroup Diagnosis Diagnosis Module/诊断模块
@{
*/
#ifdef _DEBUG
#define _BEGIN_TRACE() do { DBGPRINTF("=====TRACE Start====="); } while(0)
#define _END_TRACE() do { DBGPRINTF("===== TRACE End ====="); } while(0)
/*!
@brief 输出调试信息到模拟器的Output Window (使用DBGPRINTF)
*/
#define TRACE DBGPRINTF
/*!
@brief TRACE-直接打印字符串
*/
#define TRACE0(str) \
do \
{ \
_BEGIN_TRACE(); \
TRACE("%s : %d", __FILE__, __LINE__); \
TRACE("%s",str); \
_END_TRACE(); \
} while(0)
/*!
@brief TRACE-打印一个变量(类似于printf("%d", v0))
*/
#define TRACE1(fmt, s0) \
do \
{ \
_BEGIN_TRACE(); \
TRACE("%s : %d", __FILE__, __LINE__); \
TRACE(fmt, s0); \
_END_TRACE(); \
} while(0)
/*!
@brief TRACE-打印两个变量(类似于printf("%d %d", v0, v1))
*/
#define TRACE2(fmt, s0, s1) \
do \
{ \
_BEGIN_TRACE(); \
TRACE("%s : %d", __FILE__, __LINE__); \
TRACE(fmt, s0, s1); \
_END_TRACE(); \
} while(0)
/*!
@brief TRACE-打印三个变量(类似于printf("%d %d %d", v0, v1, v2))
*/
#define TRACE3(fmt, s0, s1, s2) \
do \
{ \
_BEGIN_TRACE(); \
TRACE("%s : %d", __FILE__, __LINE__); \
TRACE(fmt, s0, s1, s2); \
_END_TRACE(); \
} while(0)
/*!
@brief TRACE-打印四个变量(类似于printf("%d %d %d %d", v0, v1, v2, v3))
*/
#define TRACE4(fmt, s0, s1, s2, s3) \
do \
{ \
_BEGIN_TRACE(); \
TRACE("%s : %d", __FILE__, __LINE__); \
TRACE(fmt, s0, s1, s2, s3); \
_END_TRACE(); \
} while(0)
/*!
@brief 断言,当检验条件为0时向Output Window输出断言失败信息
*/
#define ASSERT(s) \
do \
{ \
if (0 == (int)(s)) \
{ \
TRACE0("Assertion failed : "#s); \
} \
} while(0)
#define VERIFY(s) ASSERT(s)
#else
#define TRACE
#define TRACE0
#define TRACE1
#define TRACE2
#define TRACE3
#define TRACE4
#define ASSERT(s)
#define VERIFY(s) (s)
#endif
/*!
@brief 定义变量int errCode用以保存异常类型,和CHECK_ERROR,CHECK_NULL一起使用
*/
#define DEFINE_ERRCODE() int errCode = SUCCESS
/*!
@brief 如果条件不为SUCCESS(0)则跳转(goto)到label为ERROR_HANDLE处开始异常处理,错误代码保存在int errCode中(使用DEFINE_ERRCODE()宏定义)
*/
// ASSERT(SUCCESS == errCode);
#define CHECK_ERROR(s) \
do \
{ \
errCode = (s); \
if (SUCCESS != errCode) \
{ \
goto ERROR_HANDLER; \
} \
} while(0)
/*!
@brief 如果条件为NULL(0)则跳转(goto)到label为ERROR_HANDLE处开始异常处理,错误代码保存在int errCode中(使用DEFINE_ERRCODE()宏定义)
*/
// ASSERT(NULL != (s));
#define CHECK_NULL(s) \
do \
{ \
if (NULL == (s)) \
{ \
errCode = EFAILED; \
goto ERROR_HANDLER; \
} \
} while(0)
/*!
@brief 错误代码类型定义
*/
typedef word AppResult;
/*!
@}
*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -