c++ 常用宏操作
//求最大值和最小值
#define MY_MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
#define MY_MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
//得到一个field在结构体(struct)中的偏移量
//#define MY_FPOS( type, field ) ( (DWORD) &(( type *) 0)-> field )
#define FPOS( type, field ) offsetof(type, field)
//得到一个结构体中field所占用的字节数
#define MY_FSIZ( type, field ) sizeof( ((type *) 0)->field )
//得到一个字的高位和低位字节
#define MY_WORD_LO(xxx) ((byte) ((WORD)(var) & 255))
#define MY_WORD_HI(xxx) ((byte) ((WORD)(var) >> 8))
//将一个字母转换为大写
#define MY_UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )
//安全删除指针
#define MY_SAFE_DELETE(p) do { if((p)!=NULL) { delete (p); (p) = NULL; } } while(0)
#define MY_SAFE_DELETE_ARRAY(p) do { if((p)!=NULL) { delete[] (p); (p) = NULL; } } while(0)
//安全删除指针
#define MY_SAFE_FREE(p) do { if((p)!=NULL) { free (p); (p) = NULL; } } while(0)
//计算数组长度
#define MY_ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
//适用于非数组
#define MY_SIZEOF(T) ((size_t)((T*)0 + 1))
//适用于数组
#define MY_ARRAY_SIZEOF(T) ((size_t)(&T+1)-(size_t)(&T))
//数组初始化
#define MY_ARRAY_ZERO_MEMORY(p) ZeroMemory(p, sizeof(p))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现