2010-03-24 113 views
1

我有一个枚举声明为:枚举关联值在C

enum qty { cars = 10, bikes = 9, horses = 9 ... } // total 28 

我怎么能加起来枚举列表的所有相关的值?

+4

我不认为你真的了解什么枚举应该是对。它看起来像你试图(误)使用它们作为关联数组或结构的替代品。 – 2010-03-24 22:22:57

+1

此外,可执行代码不保留'enums'的名称。如果您想在'enum'值和名称之间进行转换,则必须使用表格。 – 2010-03-24 22:31:09

回答

5

你无法知道在运行时enum的内容C.

此外,这听起来像一个误用枚举。您应该使用它们来定义常量,您将在代码中使用这些常量,而不是用于存储数量或类似变量的东西:枚举值是不可变的。为此目的使用整型数组;你可以循环这些。

3

有没有办法在C

表示“在数量所有枚举”
1

有没有办法来循环直通它们C(你在阿达可能;-)所以这是你能做的一切:

int sum = cars + bikes + horses + ...; 

但像zneak和泰勒说,你很可能不会使用正确的构造。

1

在C中,枚举只是映射到整数。它们甚至不是类型安全的,因为您可以在用于其他枚举的位置自由地替换一个枚举的成员。

0

如果你有非常多的这些保持同步,然后一些预处理器滥用可能会派上用场:

#define SUM(name, count) + (count) 
#define DEF(name, count) name = (count), 

enum qty 
{ 
# define QTY(f) \ 
    f(cars, 10) \ 
    f(bikes, 9) \ 
    f(horses, 9) 

    QTY(DEF) 

    total = 0 + QTY(SUM) 
};