Tag: enums

枚举对象设置为不等于其各自枚举常量的值

如果将枚举对象设置为不等于其各自枚举常量的值,则枚举对象具有什么值? 请考虑以下代码: enum foobar{ FOO = 1, BAR = 5 }; enum foobar baz = 5; enum foobar qux = 42; 变量baz被设置为整数值5 ,而变量qux被设置为整数值42 。 我怀疑变量baz将保持值BAR ,但我不确定变量qux 。 没有为枚举常量赋值42 ,那么当enum foobar变量设置为这样的值时会发生什么? C99标准是否明确了结果?

可以将另一个项添加到现有的枚举类型中吗?

我想知道是否可以在现有的枚举类型(框架的一部分)中添加/追加另一个项目? 像这样:我们有enum类型 typedef enum { UIModalTransitionStyleCoverVertical = 0, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, UIModalTransitionStylePartialCurl, } UIModalTransitionStyle; 现在我想追加或添加一个项目,如UIModalTransitionStyleCoverVerticalFlipped 。 可以完成这样的事情吗?

枚举类型检查C / gcc

请参阅下面的简单示例。 当一个函数返回一个enum被分配给一个不同enum的变量时,即使使用gcc -Wall -pedantic我也不会收到任何警告。 为什么C编译器不能对enum进行类型检查? 或者是gcc具体吗? 我现在无法访问任何其他编译器来试用它。 enum fruit { APPLE, ORANGE }; enum color { RED, GREEN }; static inline enum color get_color() { return RED; } int main() { enum fruit ftype; ftype = get_color(); }

C / C ++枚举:检测多个项目映射到相同值的时间

是否有编译时方法来检测/防止C / C ++枚举中的重复值? 问题在于有多个项目被初始化为显式值 。 背景: 我inheritance了一些C代码,如下所示: #define BASE1_VAL (5) #define BASE2_VAL (7) typedef enum { MsgFoo1A = BASE1_VAL, // 5 MsgFoo1B, // 6 MsgFoo1C, // 7 MsgFoo1D, // 8 MsgFoo1E, // 9 MsgFoo2A = BASE2_VAL, // Uh oh! 7 again… MsgFoo2B // Uh oh! 8 again… } FOO; 问题是随着代码的增长以及开发人员向MsgFoo1x组添加更多消息,最终它会超出BASE2_VAL 。 这段代码最终将被迁移到C ++,所以如果只有一个C ++解决方案(模板魔术?),那没关系 […]