当结构在不同的文件中定义时,我在尝试使结构正常工作时遇到了一些麻烦。据我所知,错误告诉我该结构被定义了两次不同的时间。我相信也许我可能需要在某个地方使用 extern ?我尝试过尝试并在 Google 上寻求帮助,但没有成功。
任何帮助将不胜感激,谢谢。我的所有四个文件都在下面。
文件:Foo.h
typedef struct
{
int number;
} my_struct; // Redefinition; different basic types
文件:Foo.c
#include "Foo.h"
#include "Bar.h"
#include <stdio.h>
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
in Bar.h
。还有两个Foo.h
and Bar.h
正在被纳入main.cpp
,结果得到my_struct
在翻译单元中定义两次。有一个ifdef
结构定义文件周围的指令。尝试这个 -
#ifndef FOO_H
#define FOO_H
typedef struct
{
int number;
} my_struct;
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)