Struct C类型定义结构重新定义,不同的基本类型

Struct C类型定义结构重新定义,不同的基本类型,struct,reference,typedef,Struct,Reference,Typedef,第一次在这里发布。我无法从单独的文件中引用typedef结构。例如: main.c//菜单和变量声明 #include <stdio.h> #include <string.h> #include "person.h" #include "person.c" person persondata[50] ; person.c//函数 extern persondata[]; void copy() { strcpy(persondata[0].name, "

第一次在这里发布。我无法从单独的文件中引用typedef结构。例如:

main.c//菜单和变量声明

#include <stdio.h>
#include <string.h>
#include "person.h"
#include "person.c"

person persondata[50] ;

person.c//函数

extern persondata[];

void copy()
{
    strcpy(persondata[0].name, "John");
}
我不断得到错误:“.name”的左边必须有结构/联合类型和重新定义,不同的基本类型


我应该如何修复此引用?

extern persondata[]
隐式等同于
extern int persondata[](如果未指定类型,编译器将假定
int
)。您需要
外部人员persondata[]


此外,编译器需要能够在person.c中查看
person
的定义,因此在文件顶部添加
#包括“person.h”

extern persondata[]
隐式等同于
extern int persondata[](如果未指定类型,编译器将假定
int
)。您需要
外部人员persondata[]

此外,编译器需要能够在person.c中查看
person
的定义,因此在文件顶部添加
#包括“person.h”

Write

extern person persondata[];
相反。 这应该能奏效

如果您没有给它正确的类型,编译器就不会知道persondata是一个person数组。

Write

extern person persondata[];
相反。 这应该能奏效

如果您没有为其提供正确的类型,编译器将不会知道persondata是一个person数组。

通常您将
#包括“person.h”
,以便使
person
的声明可见,然后您将persondata声明更改为:

extern person persondata[];
。。。i、 e.指定其类型。

通常您将
#包括“person.h”
,以使
person的声明可见,然后您将persondata声明更改为:

extern person persondata[];
。。。i、 e.指定其类型。

您需要:

#include "person.h"
person persondata[10];
你需要:

#include "person.h"
person persondata[10];

这些都是密码吗?你是否在person.c文件中包含“person.h”这就是全部代码?您是否在person.c文件中包含“person.h”您不需要使用“struct”谢谢,我只是注意到了这一点。相应地编辑。你不需要使用“struct”谢谢,只是注意到我自己。相应地编辑。person.h没有
persondata
的声明,因此应该更正而不是删除外部行(或者应该将声明添加到person.h)。person.h没有
persondata
的声明,因此应该更正而不是删除外部行(或该声明应添加到person.h中)。