📄 stdenv.h
字号:
#ifndef __STDENV_H__
#define __STDENV_H__
//////////////////////////////////////////////////////////////////////////
/*!
\file StdEnv.h
\brief 此头文件中定义了整个框架通用的一些宏和自定义数据类型,
此外还定义了调试模式、作弊模式等一些特殊模式的开关。
\author ChenChang
\version 0.1
\date 2006-12-28
*/
#include "AEEAppGen.h"
#include "AEEModGen.h"
#include "AEEStdLib.h"
// ----------------------------------------------------------------------
// 自定义数据类型
// ----------------------------------------------------------------------
typedef signed long long int64; /*!< \brief \warning 如果使用了该类型,则在编译时必须使用 ARM9 的处理器,编译参数
CPU = -cpu ARM926EJ-S */
// ----------------------------------------------------------------------
// 自定义宏
// ----------------------------------------------------------------------
#define JBM_DEBUG /*!< \brief 定义是否启动调试模式,在非调试模式下,ASSERT,TRACE,REMINDER等众多宏都将会关闭 */
#ifdef JBM_DEBUG
#define JBM_SHOW_FRAMES /*!< \brief 显示帧速 */
#define JBM_MODE_CHEAT /*!< \brief 开启作弊模式 */
#endif
#if defined(JBM_DEBUG) && defined(AEE_SIMULATOR)
#define JBM_WIN_DEBUG /*!< \brief 开启模拟器下的调试状态 */
#endif
#if defined AEE_SIMULATOR
#pragma warning (disable:4819) /*!< \brief 关闭源码文本非 Unicode 格式时的错误警告 */
#endif
#ifdef JBM_WIN_DEBUG
#pragma warning(disable:4530) /*!< \brief 关闭 STL 错误警告提示 */
#endif
/*!
\addtogroup MACRO_REMINDER
\brief RedStorm 提出了如下一些宏,各个宏的具体含义根据字面意思即可理解。
其使用方法如下:
\code
#pragma REMINDER("type your message here")
\endcode
\note 你所输入的提示信息将会在编译完成时提示在编译信息框中,
双击提示信息将可以跳转到该语句处。
@{
*/
#ifdef JBM_WIN_DEBUG
#define REMINDER_STR( x ) #x
#define REMINDER_STR2( x ) REMINDER_STR(x)
#define REMINDER( msg ) message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : REMINDER " msg )
#define REMINDERTO(to, msg ) message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : REMINDER [TO "#to"] " msg )
#define HARDCODED(v) message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : HARDCODED '"#v"'" )
#define MUST_NOT_CHECKIN message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : *************************** MUST NOT CHECKIN THIS ***********************")
#define REMOVE_THIS_SHIT message( __FILE__ "(" REMINDER_STR2(__LINE__) ") : REMOVE THIS SHIT : TEMP/HARDCODED/HACKED OR JUST PLAIN WRONG STUFF HERE.")
#define BIG_REMOVE_THIS_SHIT(msg) REMINDER("\n \
********************************************************** \n \
********************************************************** \n \
_____ ______ __ __ ____ __ __ ______ \n \
| __ \\ | ____|| \\/ | / __ \\ \\ \\ / /| ____| \n \
| |__) || |__ | \\ / || | | | \\ \\ / / | |__ \n \
| _ / | __| | |\\/| || | | | \\ \\/ / | __| \n \
| | \\ \\ | |____ | | | || |__| | \\ / | |____ \n \
|_| \\_\\|______||_| |_| \\____/ \\/ |______| \n \
\n \
_______ _ _ _____ _____ \n \
|__ __|| | | ||_ _| / ____| \n \
| | | |__| | | | | (___ \n \
| | | __ | | | \\___ \\ \n \
| | | | | | _| |_ ____) | \n \
|_| |_| |_||_____||_____/ \n \
\n \
_____ _ _ _____ _______ \n \
/ ____|| | | ||_ _||__ __| \n \
| (___ | |__| | | | | | \n \
\\___ \\ | __ | | | | | \n \
____) || | | | _| |_ | | \n \
|_____/ |_| |_||_____| |_| \n \
\n \
********************************************************** \n \
" msg " \n \
********************************************************** \n \
********************************************************** \n")
#else
#define REMINDER_STR( x )
#define REMINDER_STR2( x )
#define REMINDER( msg )
#define REMINDERTO(to, msg )
#define HARDCODED(v)
#define MUST_NOT_CHECKIN
#define REMOVE_THIS_SHIT
#define BIG_REMOVE_THIS_SHIT(msg)
#endif
/*!
@}
*/
/*!
\addtogroup MACRO_DEBUG
\brief 一系列调试用宏,在模拟器上可以通过 Output 窗口查看结果,
在手机上可以通过 BREW AppLogger 查看结果。
@{
*/
#ifdef JBM_WIN_DEBUG
#define BREAKPOINT _asm int 3
#define ASSERT(x) if(!(x)) { BREAKPOINT } /*!< \warning 这里 BREAKPOINT 之后不能加分号 */
#define VERIFY(x) if(!(x)) { BREAKPOINT }
#define VERIFY_SUCCESS(x) if ((x) != SUCCESS) { BREAKPOINT; }
#define TRACER() DBGPRINTF("[%s] - %d", __FILE__, __LINE__)
#define TRACE DBGPRINTF
#define TRACEVAR(x) TRACE("%s: %d", #x, x);
#else
#define BREAKPOINT
#define ASSERT(x)
#define VERIFY(x) (x) /*!< \brief \warning VERIFY()在 Release 版中也会执行一遍,而 ASSERT() 则仅在 Debug 版中执行 */
#define VERIFY_SUCCESS(x) (x)
#ifdef JBM_DEBUG
#define TRACER() DBGPRINTF("[%s] - %d", __FILE__, __LINE__)
#define TRACE DBGPRINTF
#define TRACEVAR(x) TRACE("%s: %d", #x, x);
#else
#define TRACER()
#define TRACE
#define TRACEVAR(x)
#endif
#endif
/*!
@}
*/
#define CleanDeleteBitmap(p) if (p) { IBITMAP_Release(p); p = NULL; }
#define CleanDeleteImage(p) if (p) { IIMAGE_Release(p); p = NULL; }
#endif
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -