gpt4 book ai didi

c++ - 使用在另一个 header 中定义的结构

转载 作者:行者123 更新时间:2023-11-30 05:42:56 26 4
gpt4 key购买 nike

我有 2 个头文件。我的代码类似于以下内容:

文件1.h

#include "file2.h"

struct foo{
int one;
};

//compiles if I add the following line.
//struct bar;

void dosomething(bar* param);
foo* dosomething1();

文件2.h

#include "file1.h"

struct bar{
int two;
struct foo* two;
};

//also error in compilation time unless I add the following
//struct foo;
void dostuff(foo* param);

为什么在file1.h中yield does not name a type "bar"错误。我想通过包含 file2.h,bar* 的定义就像 foo*反之亦然。

最佳答案

头文件应该有include guards , 以防止循环包含。

循环依赖可以使用前向声明来打破,就像你写的:

struct bar;

这是因为 #include 指令只是预处理器替换文本的指令

这意味着在循环 include 中,预处理器第二次尝试包含一个文件,include guard 将阻止它,因此编译器第一次看到 file1.h 时,它没有还见过 file2.h

关于c++ - 使用在另一个 header 中定义的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30430044/

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