C typedef struct redefinition,不同的基本类型

时间:2011-05-01 01:48:30

标签: struct reference typedef

第一次在这里发帖。我有关于从单独的文件引用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类型和重新定义,不同的基本类型

我该如何修复此引用?

4 个答案:

答案 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];