重新定义; 不同的基本类型(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.h
和Bar.h
都包含在main.cpp
,这导致在翻译单元中将my_struct
定义两次。 在struct定义文件周围有一个ifdef
指令。 试试这个 –
#ifndef FOO_H #define FOO_H typedef struct { int number; } my_struct; #endif