我已经在几个地方读过可以安全地多次定义C结构,但是我从gcc中获得了"重新定义结构"错误,用于多次定义结构(通过多个包含).一个非常简单的示例如下所示:
foo.c的:
#include "a.h"
#include "b.h"
int main(int argc, char *argv[]) {
struct bar b;
b.a = 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
啊:
struct bar {
int a;
int b;
};
Run Code Online (Sandbox Code Playgroud)
BH:
#include "a.h"
struct buz {
int x;
int y;
};
Run Code Online (Sandbox Code Playgroud)
如果我跑,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
Run Code Online (Sandbox Code Playgroud)
我知道我没有放任何包含警卫,那些将修复编译错误,但我的理解是,这应该工作.我也在struct barfoo.c中尝试了两个定义,我得到了相同的错误消息?那么,结构是否可以在C中定义多次?
Sir*_*Guy 12
C中的结构可以安全地多次声明,但只能定义一次.
struct bar;
struct bar{};
struct bar;
Run Code Online (Sandbox Code Playgroud)
编译很好,因为bar只定义一次并按你喜欢的次数声明.
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |