gpt4 book ai didi

c - 从枚举中删除一个值而不更改其他值

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:13 25 4
gpt4 key购买 nike

我有几个用作类型常量的枚举。例如:

enum item_type {
street,
town,
lake,
border,
...
}

枚举值在代码中用于指定对象类型,并作为数据文件的一部分写入磁盘。这在大多数情况下都很好用,但有一个缺点:

在不更改所有后续成员的整数值的情况下,无法删除枚举成员(因为它不再被使用)。因此,任何此类更改都会使代码与现有数据文件不兼容。

有什么好的技术可以避免这个问题吗?也许一些预处理器技巧?

我能想到的唯一解决方案是显式设置所有整数值。虽然这可行,但难以阅读和管理大型枚举。

注:本题来自Navit的源码,它使用了几个这样的“类型枚举”(尽管它们实际上隐藏在一些宏后面)。

最佳答案

如果你很少想删除项目,你可以做类似的事情

enum item_type {
street,
town,
//lake,
border = town+2,
...
}

即仅明确地为紧跟在您删除的项目之后的项目分配一个值。

既然兼容性对你来说很重要,那么硬着头皮给所有项目明确编号会更可靠

enum item_type {
street = 0,
town = 1,
//lake = 2,
border = 3,
...
}

关于c - 从枚举中删除一个值而不更改其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24046840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com