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