gpt4 book ai didi

c - C中的枚举数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:10:09 27 4
gpt4 key购买 nike

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

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 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 中的任何值决定调用函数指针数组中的哪个函数,其索引应对应于假定枚举中的值。

例如,

(access_data[*VAL])()

从上面的代码来看,它只会在 *VAL 为 3 时调用 dnt_cr 函数,但我想要的是在 *VAL 为 225 时调用 dnt_cr。

我希望这是清楚的...

最佳答案

C99+:

int a[6] = { [4] = 29, [2] = 15 };

此语法也可用作 C89 模式下的 gcc 扩展。

关于c - C中的枚举数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14193943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com