对于底层软件开发的工程师, 对宏定义肯定不陌生吧, 我在写代码的时候就习惯使用宏定义, 代码结构清晰, 修改也及其便捷, 在以下场景时使用宏定义的优势.
1. 防止头文件被重复包含
#ifndef MAIN_H
#define MAIN_H
..... //代码部分, 一般为全局变量, 函数声明
#endif
2. 简单函数实现
#define ABS(x) ((x)>=0 ? (x):(-x);) //取绝对值
#define ADD(x,y) ((x)+(y)) //加法
#define MAX(x,y) ((x)>(y) ? (x):(y)) //最大值
3. 获取变量地址
#define PTR(var) ((UINT32*)(void*)&(var))
4. 字节拼字/字拆字节
#define BYTE_TO_WORD(ray) ((word)((ray)[0]*256)+(ray)[1]) //字节拼字 LSB方式
#define WORD_TO_BYTE(ray,val) \
(ray)[0] = ((val)/256); \
(ray)[1] = ((val) & 0xFF)