如何在C中重新初始化结构而不指定它的类型?

时间:2017-04-03 09:11:16

标签: c vector struct types macros

我试图通过C宏实现类型泛型向量操作。如果初始化和声明在同一行上发生,那么我当前的实现是有效的,因为宏可以知道向量的类型:

vec2_t(char) char_vector = vec2(10, 20);         // unexpanded
struct {char x, char y;} char_vector = {10, 20}; // expanded

然而,问题在于,如果我尝试重新分配向量,它就不再知道类型,因此它不会编译:

char_vector = vec2(20, 30); // unexpanded
char_vector = {20, 30};     // expanded

将其扩展为char_vector = (struct {char x, char y;}) {20, 30};可以解决问题,但这需要在每次重新分配向量时指定类型。其他向量操作也会出现同样的问题,例如添加等等。

有没有办法实现这一点而无需在每次重新分配时指定类型?我意识到typeof可以在Linux上运行,但我正在寻找一种独立于平台的解决方案。

0 个答案:

没有答案