![]() |
1
14
前者的唯一优点是它向后兼容古老的C标准。 除此之外,后一种替代方案更为优越,因为它可以确保数据完整性,即使修改了枚举或项目更改了位置。但是,应通过检查来完成,以确保枚举中的项数与查找表中的项数相对应:
以上是实现简单“枚举-查找表”耦合的最佳方法。另一种选择是使用结构,但这更适合于更复杂的数据类型。 最后,作为补充说明,第三个版本将使用“X宏”。除非您有关于代码重复和维护的专门要求,否则不建议这样做。为了完整起见,我会将其包括在这里,但我不建议在一般情况下使用:
|
![]() |
2
3
另一种可能是使用函数,而不是数组:
如果添加枚举值但忘记添加匹配的开关大小写,gcc至少会发出警告。
(我想你可以试试做这种功能
附录:我提到的gcc警告仅适用于
还可以包含越界值:
(最后一个片段还有一些额外的限制,但这个附录已经很长了,所以我现在不想再赘述了。) |
![]() |
3
0
另一种可能性是用户
尽管使用它有许多缺点,但主要的好处是
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 7 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 7 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 7 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 7 月前 |