【发布时间】:2014-06-04 20:20:32
【问题描述】:
我有几个用作类型常量的枚举。例如:
enum item_type {
street,
town,
lake,
border,
...
}
枚举值在代码中用于指定对象类型,并作为数据文件的一部分写入磁盘。这通常效果很好,但有一个缺点:
如果不更改所有后续成员的整数值,则无法删除枚举成员(因为不再使用它)。因此,任何此类更改都会使代码与现有数据文件不兼容。
有没有什么好的技术可以避免这个问题?也许是一些预处理器技巧?
我能想到的唯一解决方案是显式设置所有整数值。虽然这可行,但对于大枚举来说很难阅读和管理。
注意:这个问题来自Navit的源代码,它使用了几个这样的“类型枚举”(虽然它们实际上隐藏在一些宏后面)。
【问题讨论】:
标签: c enums refactoring c-preprocessor