重新定义; 不同的基本类型(typedef struct)

当我们在不同的文件中定义结构时,我在尝试使结构正常工作时遇到了一些麻烦。 据我所知,错误告诉我结构被定义了两个不同的时间。 我相信也许我可能需要在某处使用extern? 我尝试过试验并在Google上寻求帮助,但无济于事。

任何帮助都将非常感谢,谢谢。 我的所有四个文件都在下面。

文件:Foo.h

typedef struct { int number; } my_struct; // Redefinition; different basic types 

文件:Foo.c

 #include "Foo.h" #include "Bar.h" #include  my_struct test; int main(void) { test.number = 0; DoSomething(&test); printf("Number is: ", &test.number); } 

文件:Bar.h

 #include "Foo.h" void DoSomething(my_struct *number); 

文件:Bar.c

 #include "Bar.h" void DoSomething(my_struct *number) { number->number = 10; } 

问题是你在Foo.h中有Bar.h 并且Foo.hBar.h都包含在main.cpp ,这导致在翻译单元中将my_struct定义两次。 在struct定义文件周围有一个ifdef指令。 试试这个 –

 #ifndef FOO_H #define FOO_H typedef struct { int number; } my_struct; #endif