每个.h文件都需要在另一个中定义的结构?(C)

Jel*_*Cat 3 c

我有两个头文件,每个都需要在另一个中定义的类型.当我尝试编译时,我收到有关未知类型名称的错误.(如果我只提供结构声明而不是定义,我会得到一个不完整类型的错误.)什么是让我能够正确分享这些结构的解决方案?

现在,我的代码看起来很像以下(想象#ifndef预处理器指令等):

<headerA.h>

#include "headerB.h"
typedef struct { 
  mytypeB myB;
} mytypeA;

<headerB.h>

#include "headerA.h"
typedef struct {} mytypeB;
void foo( mytypeA * myA);
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

你应该转发声明struct mytypeA而不是包括headerA.h:

在headerB.h里面:

struct mytypeA; // <<<--- Forward declaration

void foo(struct mytypeA* myA);
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为您没有使用实际的mytypeA,只有指向它的指针.你不能用同样的技巧headerA,因为mytypeA包括实际mytypeB.