Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C/C提供枚举默认值_C_Objective C_Enums_Enumeration - Fatal编程技术网

Objective-C/C提供枚举默认值

Objective-C/C提供枚举默认值,c,objective-c,enums,enumeration,C,Objective C,Enums,Enumeration,我在某个地方读到过关于给定枚举默认值的内容,如下所示: typedef enum { MarketNavigationTypeNone = 0, MarketNavigationTypeHeirachy = 1, MarketNavigationTypeMarket = 2 } MarketNavigationLevelType; 。。但我不记得这样做的价值。如果我不给他们默认值——然后有人在稍后对枚举重新排序——风险是什么 如果我总是使用枚举名,甚至不使用它们的整数值来引用它们,是否存在任

我在某个地方读到过关于给定枚举默认值的内容,如下所示:

typedef enum  {
MarketNavigationTypeNone = 0,
MarketNavigationTypeHeirachy = 1,
MarketNavigationTypeMarket = 2
} MarketNavigationLevelType;
。。但我不记得这样做的价值。如果我不给他们默认值——然后有人在稍后对枚举重新排序——风险是什么

如果我总是使用枚举名,甚至不使用它们的整数值来引用它们,是否存在任何风险


我能想到的唯一可能的问题是,如果我从DB的int值初始化枚举-并且枚举被重新排序-那么应用程序将中断。

通常,只有当枚举暴露于某种外部API,或者它将被用于通过数据文件或其他方式交换数据时,这才重要。如果枚举仅在应用程序中使用,而不在其他地方使用,则实际值无关紧要。

如果不是默认值,则您将为它们提供始终具有的值

如果不显式初始化它们,则第一个枚举数的值为零。对于所有其他枚举数,如果没有初始值设定项,则它们的值是前一个枚举数的值增加1

为其指定明确的值有两个原因:

  • 你不想让他们拥有其他情况下的价值观
  • 你想清楚他们有什么价值(对你或其他开发者)

如果您总是以它们的名称引用它们,并且从不显式地使用整数值进行比较或赋值,则不需要显式地给它们赋值。

“默认值”-是的,我知道它们是常量-我只是使用了错误的术语。您没有提到将枚举存储在应用程序之外,然后重新初始化它们的事实?@ban:如果外部接口没有使用具有等效定义的枚举,那么这将显式地为它们分配一些整数值。