在下面的代码中:
typedef struct
{
union U
{
int a;
char b;
}U1;
}A;
typedef struct
{
union U
{
int a;
char b;
}U1;
}B;
编译器给出错误“[Error] redefinition of 'union U'”。 但这些 union 是不同结构的成员。 所以一般不会有变量名干扰的机会。 那么这个错误的原因是什么?
最佳答案
那里没有将名称分离到 namespace 中,您实际上正在尝试重新定义。
片段:
typedef struct { union U { int a; char b; } U1; } A;
这里没有显着差异:
union U { int a; char b; };
typedef struct { union U U1; } A;
你可以通过简单地为你的类型引入人工命名空间来解决它:
typedef struct { union AU { int a; char b; } U1; } A;
typedef struct { union BU { int a; char b; } U1; } B;
或者,如果 union 是意味着(并将保持)相同的类型,只需定义它一次:
union U { int a; char b; };
typedef struct { union U U1; } A;
typedef struct { union U U1; } B;
关于c - 错误 : Redefinition of union,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569663/