我什至不知道,我问的是不是愚蠢的。我不是要您为我编写任何代码,而是要以更好的方式做某事的想法。
我有一个包含大量这样的项目的结构:
typedef struct _myStruct
{
int int1;
char char1;
int int2;
:
:
int int50;
}myStruct;
我有另一个枚举,它对 myStruct 中的每个项目都有一个条目。
enum
{
eINT1,
eCHAR1,
eINT2,
:
:
eINT50
} PARAMETER_ID;
我想为每种数据类型编写一个函数[比如一个用于 int,一个用于 char,一个用于 string 等],myStruct
当PARAMETER_ID
作为输入给出时,它返回一个成员的值。
例如,我需要一个int GetInt(PARAMETER_ID)
函数,它返回int1
eINT1 作为参数传递时的值。同样,我将拥有char GetCharacter(PARAMETER_ID)
等float GetFloat(PARAMETER_ID)
。
结构中的项目数可能很大。因此,为每个项目使用 switch-case 将不是一个可行的选择。
我能想到的唯一其他选择是使用结构变量和offsetof()
函数的地址来计算参数的地址,然后memcpy
将所需的字节放入变量中。在这种情况下,我需要将每个参数的偏移量保留在某个地方,但这不是问题。
我正在寻找替代方案来做到这一点。任何帮助将不胜感激。
谢谢你。