Files
wnmj/Servers/全局定义/Macro.h
2026-02-13 14:34:15 +08:00

65 lines
2.1 KiB
C

#ifndef MACRO_HEAD_FILE
#define MACRO_HEAD_FILE
//////////////////////////////////////////////////////////////////////////////////
//常用常量
//无效数值
#define INVALID_BYTE ((BYTE)(0xFF)) //无效数值
#define INVALID_WORD ((WORD)(0xFFFF)) //无效数值
#define INVALID_DWORD ((DWORD)(0xFFFFFFFF)) //无效数值
//////////////////////////////////////////////////////////////////////////////////
//数组维数
#define CountArray(Array) (sizeof(Array)/sizeof(Array[0]))
//无效地址
#define INVALID_IP_ADDRESS(IPAddress) (((IPAddress==0L)||(IPAddress==INADDR_NONE)))
//////////////////////////////////////////////////////////////////////////////////
//存储长度
#ifdef _UNICODE
#define CountStringBuffer CountStringBufferW
#else
#define CountStringBuffer CountStringBufferA
#endif
//存储长度
#define CountStringBufferA(String) ((UINT)((lstrlenA(String)+1)*sizeof(CHAR)))
#define CountStringBufferW(String) ((UINT)((lstrlenW(String)+1)*sizeof(WCHAR)))
//字符数组长度
#define CountStringW(sz) (sizeof(sz)>>1)
#define CountStringA(sz) (sizeof(sz))
#ifdef UNICODE
#define CountString CountStringW
#else
#define CountString CountStringA
#endif
//////////////////////////////////////////////////////////////////////////////////
//接口释放
#define SafeRelease(pObject) { if (pObject!=NULL) { pObject->Release(); pObject=NULL; } }
//删除指针
#define SafeDelete(pData) { try { delete pData; } catch (...) { ASSERT(FALSE); } pData=NULL; }
//关闭句柄
#define SafeCloseHandle(hHandle) { if (hHandle!=NULL) { CloseHandle(hHandle); hHandle=NULL; } }
//删除数组
#define SafeDeleteArray(pData) { try { delete [] pData; } catch (...) { ASSERT(FALSE); } pData=NULL; }
//校验宏
#define VERIFY_RETURN_FALSE(x) {if (!(x)){ ASSERT(0); return false; }}
#define VERIFY_RETURN_TRUE(x) {if (!(x)){ ASSERT(0); return true; }}
#define VERIFY_THROW(x,y) {if (!(x)){ ASSERT(0); throw (y); }}
#define VERIFY_RETURN_VOID(x) {if (!(x)){ ASSERT(0); return; }}
#define VERIFY_RETURN(x,y) {if (!(x)){ ASSERT(0); return (y); }}
//////////////////////////////////////////////////////////////////////////////////
#endif