我在之前的博客 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!

02-06 17:50