在项目中,用匿名结构体的地址作为常量来标识不同业务类型(例如 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 }}
