gpt4 book ai didi

c - 头文件中需要包含哪些文件?结构?

转载 作者:行者123 更新时间:2023-12-02 07:14:33 25 4
gpt4 key购买 nike

假设我像这样在“struct.h”中定义一个结构

struct box {
int value;
}

我在另一个文件中使用该结构说“math.c”

#include "struct.h"

struct box *sum(struct box *a1, struct box *a2) {
struct box *a3 = malloc(sizeof (struct box));
a3->value = a1->value + a2->value;
return a3;
}

“math.h”是否也需要包含“struct.h”?

#include "struct.h"

struct box *sum(struct box *a1, struct box *a2);

如果 struct box 被替换为 bool,我需要在头文件和 c 文件中都包含 stdbool.h 吗?似乎编译器想要这个。

什么时候应该在 header 而不是 .c 中包含文件?也想知道我的例子是否有什么不寻常的地方。

谢谢!

最佳答案

一般规则是在头文件中包含尽可能少的内容。

尽可能使用前向声明而不是定义,然后您可以将定义移至 .c 文件。这可以减少您需要包含在头文件中的文件数量。

在您的具体示例中,您可以从 math.h 中删除 struct.h 的包含并改为转发声明框。并不是说它在这种特定情况下有很大的不同。

关于c - 头文件中需要包含哪些文件?结构? <stdbool.h>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240475/

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