Tun*_*izz 10 c struct typedef extern
当在不同的文件中定义结构时,我在尝试使结构正常工作时遇到了一些麻烦.据我所知,错误告诉我结构被定义了两个不同的时间.我相信也许我可能需要在某处使用extern?我尝试过试验并在Google上寻求帮助,但无济于事.
任何帮助都将非常感谢,谢谢.我的所有四个文件都在下面.
文件:Foo.h
typedef struct
{
int number;
} my_struct; // Redefinition; different basic types
Run Code Online (Sandbox Code Playgroud)
文件: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);
}
Run Code Online (Sandbox Code Playgroud)
文件:Bar.h
#include "Foo.h"
void DoSomething(my_struct *number);
Run Code Online (Sandbox Code Playgroud)
文件:Bar.c
#include "Bar.h"
void DoSomething(my_struct *number)
{
number->number = 10;
}
Run Code Online (Sandbox Code Playgroud)
Mah*_*esh 14
问题是你有Foo.h在Bar.h.两者Foo.h和Bar.h被列入main.cpp,其中结果得到my_struct的翻译单元定义两次.有一个ifdef关于struct定义文件的指令.试试这个 -
#ifndef FOO_H
#define FOO_H
typedef struct
{
int number;
} my_struct;
#endif
Run Code Online (Sandbox Code Playgroud)