gpt4 book ai didi

可以多次定义 C 结构吗?

转载 作者:太空狗 更新时间:2023-10-29 16:53:31 25 4
gpt4 key购买 nike

我在几个地方读到过可以安全地多次定义一个 C 结构,但是我从 gcc 得到一个“结构的重新定义”错误,用于多次定义一个结构(通过多个包含)。一个非常简化的示例如下所示:

foo.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;
};

b.h:

#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

我知道我没有放置任何包含守卫,它们会修复编译错误,但我的理解是这应该仍然有效。我还在 foo.c 中尝试了两个 struct bar 定义,我得到了相同的错误消息?那么,结构体能否在 C 中定义多次?

最佳答案

C 中的结构可以安全地声明多次,但只能定义一次。

    struct bar;
struct bar{};
struct bar;

编译得很好,因为 bar 只定义一次,声明次数不限。

关于可以多次定义 C 结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com