Tag: 枚举

Enum如何在C上分配内存?

我正在尝试使用C和Assembly(intelx8086)语言。 我也在使用一个class级,我的一个朋友给了我一个 typedef enum data_10 {a=0,b=7,c=10,} data_10_type; 我想按比例使用这个类(AKA构造它/在Assembly上销毁它)。 我的问题是,“枚举”需要多少内存?

是否有类似C的方式从java中的枚举中获取项目编号?

Perhap这是一个简单的基本问题 有一个枚举 public enum TK{ ID,GROUP,DATA,FAIL; } 我可以获得订单号,例如ID = 0,GROUP = 2,DATA = 3,FAIL = 4? 这是一种方法,但一个奇怪而漫长的方式! = S public enum TK{ ID(0),GROUP(1),DATA(2),FAIL(3); int num; TK(int n) { this.num=n; } public int get() { return num; } }; 得到数字所以我写TK.ID.get(),TK.GROUP.get()等…我不喜欢那样 有一个更好的方法? (C enums,C macros ..我想念你们两个) 谢谢

在C中指定枚举类型的大小

已经阅读了这个相关的问题 ,但正在寻找一些更具体的东西。 有没有办法告诉你的编译器你想要你的枚举有多宽? 如果是这样,你怎么做? 我知道如何在C#中指定它; 它是否同样在C中完成? 它甚至值得做吗? 当枚举值传递给函数时,它是否会作为int -sized值传递?

从C中的函数返回枚举?

如果我在头文件中有类似下面的内容,我如何声明一个返回类型为Foo的枚举的函数? enum Foo { BAR, BAZ }; 我可以做以下的事情吗? Foo testFunc() { return Foo.BAR; } 或者我需要使用typedef或指针或什么?

在C中从String转换为Enum

是否有一种方便的方法来获取字符串(由用户输入)并将其转换为枚举值? 在这种情况下,字符串将是枚举值的名称,如下所示: enum Day { Sunday = 0, Monday = 1, … } 因此,如果用户给出了Day的名称,则可以将其解析为相应的Enum值。 诀窍是,我有超过500个我正在使用的值,它们分布在多个枚举中。 我知道c#中的Enum.Parse方法,所以在c中有这种forms吗?

在C enum和XML之间转换

在XML中存储枚举并再次读取它的最简洁方法是什么? 说我有: enum ETObjectType {ETNormalObjectType, ETRareObjectType, ETEssentialObjectType}; …我想要一个变量, enum ETObjectType objectType = ETNormalObjectType; ,并将其转换为如下所示的XML: ETNormalObjectType 。 目前我正在做的是这样的: NSString* const ETObjectTypeAsString[] = {@”ETNormalObjectType”,@”ETRareObjectType”,@”ETEssentialObjectType”}; [anXMLElement addChild:[NSXMLElement elementWithName:@”objectType” stringValue:ETObjectTypeAsString[objectType]]]; ……但这并不完全理想; 每次更改枚举时,我都不满意更新两个列表。 但这是可以接受的。 更糟糕的是读回XML,我目前正在这样做: if ([[[anXMLElement childNamed:@”objectType”] stringValue] isEqualToString:@”ETRareObjectType”]) { [self initObjectType:ETRareObjectType]; } else if ([[[anXMLElement childNamed:@”objectType”] stringValue] isEqualToString:@”ETEssentialObjectType”]) { [self initObjectType:ETEssentialObjectType]; } else { [self initObjectType:ETNormalObjectType]; } 呸! […]

检测不匹配的数组枚举初始值设定项

使用C进行嵌入式编程时,我发现自己多次使用枚举和数组进行映射,因为它们快速且内存效率高。 enum { ID_DOG = 0, ID_SPIDER, ID_WORM, ID_COUNT }; int const NumberOfEyes[ID_COUNT] = { 2, 8, 0 }; 问题是,有时在添加/删除项目时,我会犯错,枚举和数组不同步。 如果初始化列表太长,编译器将检测它,但不是其他方式。 那么有可靠和可移植的编译时检查初始化列表是否与数组的长度匹配?

是否需要C enum中的最后一个逗号?

C enum声明中是否需要最后一个逗号? ie是VAL3要求后的逗号? enum { Val1, Val2, Val3, } someEnum; 将其留入/取出是否有任何副作用 谢谢