如何在 C 语言中解决"Array has incomplete element type"



我一直在CS50工作,我正在做struct,允许用户输入并保存在数组中。然而,我得到

数组元素类型不完整

下面是我正在编写的程序:

Phonebook.c

#include<stdio.h>
#include<string.h>
#include<cs50.h>
#include<ctype.h>
#define MAX 4
typedef struct  
{
char name[20];
char number[8];
}person;
int main ()
{
struct person ppl[MAX];
int i;

for(i = 0;i < MAX; i++ )
{
printf("nEnter details of user %dnn", i+1);

printf("Enter name: ");
scanf("%s", ppl[i].name);

printf("Enter phone number: ");
scanf("%s", ppl[i].number);
}

printf("n");

printf("NametPhone Numbern");

for(i = 0; i < MAX; i++)
{
printf("%st%sn", ppl[i].name, ppl[i].number);
}

return 0;
}

错误加

clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    Phonebook.c  -lcrypt -lcs50 -lm -o Phonebook
Phonebook.c:15:22: error: array has incomplete element type 'struct person'
struct person ppl[MAX];
^
Phonebook.c:15:12: note: forward declaration of 'struct person'
struct person ppl[MAX];
^
1 error generated.
make: *** [<builtin>: Phonebook] Error 1

如何解决这个问题?请给我点化一下。

person是一个未命名结构体的类型定义。struct person不存在

省略struct前缀:person ppl[MAX];

或者为未命名的结构体指定一个名称:typedef struct people(此时,如果您希望将结构体引用为struct people而不是people,则可以删除类型定义)

相关内容

最新更新