【发布时间】:2015-07-10 18:39:11
【问题描述】:
我正在尝试在 C 中声明一个泛型变量类型(我不能使用 C++),我想到了以下选项。
选项1
typedef struct
{
void *value;
ElementType_e type;
} Data_t;
选项 2
typedef struct {
ElementType_e type;
union {
int a;
float b;
char c;
} my_union;
} my_struct;
其中 ElementType_e 是一个枚举,它包含所有可能的变量类型(例如 int、char、unsigned int 等)。我有点倾向于选项 1,因为与 switch 相比,我不相信强制转换会增加额外的计算时间,对吧?
我只是想知道哪种类型更有用?我知道选项 1 每次使用/访问时都需要强制转换。强制转换是否可能发生任何问题(尤其是在不同平台上运行/编译代码时,例如 32 位和 16 位微)
而 option2 需要一个 switch () 来执行任何操作(例如添加,...)。
以下链接解释了选项 2 更好(从可读性的角度来看),但我主要关心代码大小和计算成本。 Generic data type in C [ void * ]
【问题讨论】:
标签: c