我正在尝试编写一些通用结构。从本质上讲,我需要的是 C++ 模板,但由于我是用 C 编写的,所以模板不在考虑之列。目前我正在考虑两种方法来实现我想要的。
方法一:使用预处理器。像这样:
#define DEFINE_PAIR(T) typedef struct Pair_##T{ \
T x; \
T y; \
} Pair_##T
DEFINE_PAIR(int);
int main(){
Pair_int p;
return 0;
}
一个明显的缺点是您必须在使用类型之前调用宏。可能还有更多的缺点,我希望你能指出。
方法 2:只使用 void-pointers,如下所示:
typedef struct Pair{
void* x;
void* y;
} Pair;
显然,这种方法不是类型安全的(我可以轻松地将一对字符串传递给需要一对双精度的函数),而且执行释放的代码使用这种方法会变得更加混乱。
我想听听你对此的看法。这两种方法中哪一种更好/更差,为什么?有没有其他方法可以用来在 C 中编写通用结构?
谢谢。