C中的枚举数组



我需要使数组像enum一样工作,我可以在初始化期间改变数组中元素的索引位置。例如,可以有一个enum

enum Fruit_t {
APPLES,
ORANGES,
STRAWBERRIES = 8 }

这里,草莓从2变成了8。这可以在数组中完成,而不是可以改变位置吗?这在C语言中可能吗?如果是,请如何处理?

如有其他建议,我们将不胜感激

让我解释一下我的意图

我正在使用一个函数指针数组

static BT (*data_access_typ [4])() =
{ 
    NULL,
    ARRAY,  
    STRUCT,
    dnt_cr
};
我需要调用这个函数
(access_data[*VAL])()

其中*VAL可以是该enum中的任意值

enum data_access_typ    {
                        Null, array, struc, bool, bit_str, int32, unsin32, float_pt, oct_str=9, vis_str,
                        bcd=13, int8=15, int16, unsin8, unsin16, int64=20, unsin64, _enum, float32, float64,
                        date_tim, date, time, dnt_cr=225
                    };

如果值是NULL, ARRAY, STRUCT,直到dnt_car(255),则有单独的函数要执行,但我不需要所有类型。只有几个5或6个函数。所以我真的不打算使用枚举(仍在试图弄清楚如何使它为我想做的工作)。

我所要做的是,*VAL上的任何值都决定了在函数指针数组中调用哪个函数,该函数的索引应该对应于假定的enum中的值。

例如

(access_data[*VAL])()

从上面的代码中,只有当*VAL为3时才会调用dnt_cr函数,但我想要的是当*VAL为225时调用dnt_cr。

C99+:

int a[6] = { [4] = 29, [2] = 15 };
这个语法也可以作为C89模式下的gcc扩展使用。

相关内容

  • 没有找到相关文章

最新更新