在访问结构指针的成员时,取消引用指向不完整类型的指针

时间:2014-03-30 17:35:43

标签: c pointers struct dereference

我有以下示例代码:

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来编译

有人能给我一些指导吗?感谢

1 个答案:

答案 0 :(得分:0)

这一行:

printf(&#34;人名:%s \ t年龄:%d \ n&#34;,pp-&gt;名称,pp-&gt;年龄);

取消引用person结构。但是,您的.h文件仅包含前向声明。

将打印功能放入person.c,或将完整的struct定义移至person.h