我已经在几个地方读到 C 结构可以安全地定义多次,但是我从 gcc 中得到一个“重新定义结构”错误,用于多重定义一个结构(通过多个包含)。一个非常简化的示例如下所示:
富.c:
#include "a.h"
#include "b.h"
int main(int argc, char *argv[]) {
struct bar b;
b.a = 2;
return 0;
}
啊:
struct bar {
int a;
int b;
};
:
#include "a.h"
struct buz {
int x;
int y;
};
如果我跑步,gcc foo.c
我会得到:
In file included from b.h:1:0,
from foo.c:2:
a.h:1:8: error: redefinition of ‘struct bar’
a.h:1:8: note: originally defined here
我知道我没有放置任何包含防护,这些防护将修复编译错误,但我的理解是这仍然可以工作。struct bar
我还在foo.c 中尝试了两个定义,但我得到了相同的错误消息?那么,是否可以在 C 中多次定义结构?