![]() |
1
14
前者的唯一优点是它向后兼容古老的C标准。 除此之外,后一种替代方案更为优越,因为它可以确保数据完整性,即使修改了枚举或项目更改了位置。但是,应通过检查来完成,以确保枚举中的项数与查找表中的项数相对应:
以上是实现简单“枚举-查找表”耦合的最佳方法。另一种选择是使用结构,但这更适合于更复杂的数据类型。 最后,作为补充说明,第三个版本将使用“X宏”。除非您有关于代码重复和维护的专门要求,否则不建议这样做。为了完整起见,我会将其包括在这里,但我不建议在一般情况下使用:
|
![]() |
2
3
另一种可能是使用函数,而不是数组:
如果添加枚举值但忘记添加匹配的开关大小写,gcc至少会发出警告。
(我想你可以试试做这种功能
附录:我提到的gcc警告仅适用于
还可以包含越界值:
(最后一个片段还有一些额外的限制,但这个附录已经很长了,所以我现在不想再赘述了。) |
![]() |
3
0
另一种可能性是用户
尽管使用它有许多缺点,但主要的好处是
|
![]() |
ridiculous_fish · std::是否保证短路? 3 年前 |
![]() |
TanM · 为什么C编译器允许我使用strcpy来覆盖字符串文字? 7 年前 |
|
new User · 在不复制的情况下开始修剪Cstring 7 年前 |
![]() |
Galaxy6789 · 用另一个词替换句子中的一个词 7 年前 |
![]() |
J.F. · Q: C++-使用类反转字符串(句子和单词) 7 年前 |
![]() |
PoVa · 将枚举与字符串关联的正确方法 7 年前 |
![]() |
Ryon · 使用C字符串和指针。删除除小写和空格外的所有字符 7 年前 |
![]() |
Art Em · 为字符串动态分配内存 7 年前 |
![]() |
JhSi · 为什么打印字符串数组时只打印第一个字符? 7 年前 |