在项目中,用匿名结构体的地址作为常量来标识不同业务类型(例如 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
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.