一旦创建了C枚举,是否可以为其添加值?

mih*_*jlv 3 c enums

我试过谷歌搜索它,但没有想出任何东西.有谁知道这是否可以做到?如果不是,有一个优雅的工作吗?

更新:我认为Frank Osterfeld的答案是最明确的解决方案.感谢所有其他答案,我已经提出了你的答案.

Sjo*_*erd 5

您不能以不同的值重新打开相同的枚举:

enum Colors { Red, Blue, Yellow };
enum Colors { Green = 3 }; // ERROR
Run Code Online (Sandbox Code Playgroud)

但是,在C中,所有枚举都可以自动转换为彼此.所以只需创建一个新的枚举,如下所示:

enum Colors { Red, Blue, Yellow };
enum MoreColors { Green = 3 };

int foo()
{
  enum Colors c;
  c = Green; // This will compile
}
Run Code Online (Sandbox Code Playgroud)


Fra*_*eld 5

正如其他人所说,你不能重新声明枚举(在哪种情况下,应该使用哪一个?).

如果你只是需要一些常数,并希望延长他们的特殊情况下,可以使用多个enum声明,一个延伸至另一然后用整数来保存的值:

enum Error { NoError=0, AllIsBroken, WhatTheHellAreYouDoing, UserDefinedError };

enum NetworkError { HostNotFound=UserDefinedError+1, ConnectionTimeout, ... };

int error = HostNotFound;

if ( error == NoError )
    ...
if ( error == HostNotFound )
    ...
Run Code Online (Sandbox Code Playgroud)