我有以下示例代码:
person.h
typedef struct person Person;
Person* makePerson(char* n, int i);
person.c
#include "person.h"
struct person {
char* name;
int age;
};
Person* makePerson(char* n, int i) {
Person person;
person.name = n;
person.age = i;
return &person;
}
的main.c
#include <stdio.h>
#include "person.h"
int main() {
Person* pp = makePerson("Mark",24);
printf("Person's name : %s\t Person's age : %d\n",pp->name, pp->age);
}
我收到错误&#34;解除指向不完整类型的指针&#34;当我尝试打印出对应于Person指针的名称和年龄成员时,pp。
我正在使用gcc-std = c99 -o main main.c person.c来编译
有人能给我一些指导吗?感谢
答案 0 :(得分:0)
这一行:
printf(&#34;人名:%s \ t年龄:%d \ n&#34;,pp-&gt;名称,pp-&gt;年龄);
取消引用person
结构。但是,您的.h
文件仅包含前向声明。
将打印功能放入person.c
,或将完整的struct
定义移至person.h
。