使用C中的索引访问枚举

use*_*265 5 c indexing enums

考虑:

enum Test
{
    a = 3,
    b = 7,
    c = 1
};
Run Code Online (Sandbox Code Playgroud)

我想使用索引访问枚举.像这样的东西:

for (i=0; i<n; i++)
    doSomething((Test)i);
Run Code Online (Sandbox Code Playgroud)

我怎么能做这样的事情,我可以使用索引访问枚举,虽然枚举的成员有不同的值?

zwo*_*wol 11

这是你能做的最好的事情:

enum Test { a = 3, b = 7, c = 1, LAST = -1 };
static const enum Test Test_map[] = { a, b, c, LAST };

for (int i = 0; Test_map[i] != LAST; i++)
    doSomething(Test_map[i]);
Run Code Online (Sandbox Code Playgroud)

你必须自己维护映射.


Chr*_*uma 5

你的问题表明你并不真正理解枚举的用途.

它不是可以索引的东西,也没有任何理由.你所定义其实只是3常量命名a,bc,其值3,71分别.