我需要使数组像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 };