我在之前的博客 https://blog.csdn.net/ICE_KoKi/article/details/81224957 写过一个工程中标志位的API,后来在实际应用中发现有两个问题:
- 原博客方法1支持的flag数量太过有限,工程应用中32个可能还是不够用;
- 原博客方法2在VS2013中是测试通过的,但是C99标准下无法通过测试,估摸着还是字符串的处理方法导致的,因此方法2适用性不够广;
- 原博客方法2过于僵硬,在调用对应标志位时还需要加上字符串所需的双引号,经过测试,我发现还是方法1好使。
以上原因促使我改进了原博客的方法1,具体改进方向为:
- 将可用的标志位数量扩展为理论上的“无限”;
- 保留原版方法的易用度。
代码详见GitHub链接:https://github.com/FunkyKoki/Flags_API
有两点在使用时需要注意:
1. 在我开源的代码中,仅将标志位数量扩展为128个,不过抛砖引玉,相信看懂的童鞋依葫芦画瓢很容易进行扩展,这里我就偷一个懒了。
2. 有的童鞋可能会抱怨flags.h太长,实际上,作为建议,在确保你所定义的标志位数量小于等于可用数量时,你尽可将枚举类型中无用的部分删去,仅保留您自定义的枚举项以及最大项Flag_MAX。
Hope you enjoy it!