第一次在这里发帖。我有关于从单独的文件引用typedef结构的问题。例如:
main.c //菜单和变量声明
#include <stdio.h>
#include <string.h>
#include "person.h"
#include "person.c"
person persondata[50] ;
person.h // typedef struct {...} person;
typedef struct
{
char name[50];
}person;
person.c //功能
extern persondata[];
void copy()
{
strcpy(persondata[0].name, "John");
}
我一直收到错误:“。name”左边必须有struct / union类型和重新定义,不同的基本类型
我该如何修复此引用?
答案 0 :(得分:2)
通常你会#include "person.h"
以便person
的声明可见,然后你会将persondata声明更改为:
extern person persondata[];
...即指定其类型。
答案 1 :(得分:1)
extern persondata[];
隐式等效于extern int persondata[];
(如果未指定类型,编译器将假定为int
)。您需要extern person persondata[];
。
此外,编译器需要能够在person.c中看到person
的定义,因此在文件的顶部添加#include "person.h"
。
答案 2 :(得分:1)
写
extern person persondata[];
代替。 这应该可以解决问题。
如果你没有给它正确的类型,编译器就不会知道persondata是一个人的数组。
答案 3 :(得分:0)
你需要:
#include "person.h"
person persondata[10];