在项目中,用匿名结构体的地址作为常量来标识不同业务类型(例如 A 、B 、C 、D……),
这样做的目的是彻底避免魔术数字( magic number ),并且希望在逻辑判断中直接通过指针比较。
代码 h 文件
typedef struct __BizType *BizTypeRef; // 对外暴露的常量声明 extern const BizTypeRef kBizTypeA; extern const BizTypeRef kBizTypeB; extern const BizTypeRef kBizTypeC; extern const BizTypeRef kBizTypeD; 实现文件
// 定义结构体 struct __BizType { int value; }; // 定义常量指针 const BizTypeRef kBizTypeA = &(const struct __BizType){ .value = 1 }; const BizTypeRef kBizTypeB = &(const struct __BizType){ .value = 2 }; const BizTypeRef kBizTypeC = &(const struct __BizType){ .value = 3 }; const BizTypeRef kBizTypeD = &(const struct __BizType){ .value = 4 }; 使用
// 使用示例 void handleBiz(BizTypeRef type) { if (type == kBizTypeA) { // 处理业务 A } else if (type == kBizTypeB) { // 处理业务 B } } 