我需要使一个数组像枚举一样工作,我可以在初始化期间更改数组中元素的索引位置.例如,我们可以有一个枚举
enum Fruit_t {
APPLES,
ORANGES,
STRAWBERRIES = 8 }
Run Code Online (Sandbox Code Playgroud)
这里,草莓而不是2,变成8.这可以在阵列中完成,而位置可以改变吗?这可能在C?如果有,请问怎么样?
任何其他可能的建议将不胜感激
让我解释我的意图
我正在使用一个函数指针数组
static BT (*data_access_typ [4])() =
{
NULL,
ARRAY,
STRUCT,
dnt_cr
};
Run Code Online (Sandbox Code Playgroud)
我需要调用这个函数
(access_data[*VAL])()
Run Code Online (Sandbox Code Playgroud)
其中*VAL可以是此枚举中的任何值
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
};
Run Code Online (Sandbox Code Playgroud)
如果值为NULL,ARRAY,STRUCT,直到dnt_car(255),则要执行单独的函数,但我不需要所有类型.只需几个或5个功能.所以我真的不打算使用枚举(仍然试图弄清楚如何使它适用于我想做的事情).
我想要做的就是*VAL处的任何值都决定了在函数指针数组中调用哪个函数,其索引应该对应于所谓的枚举中的值.
例如,
(access_data[*VAL])()
从上面的代码中,只有当*VAL为3时它才会调用dnt_cr函数,但如果*VAL为225,我想要的是调用dnt_cr.
我希望这很清楚......
C99 +:
int a[6] = { [4] = 29, [2] = 15 };
Run Code Online (Sandbox Code Playgroud)
此语法在C89模式下也可用作gcc扩展名.
归档时间: |
|
查看次数: |
541 次 |
最近记录: |