带有结构和函数原型的头文件,使用关键字“extern”

时间:2016-01-02 23:05:06

标签: c function struct prototype

我正在尝试使用函数原型在头文件中定义一个结构,该函数原型将指向该结构的指针作为参数。

#ifndef _GETDATA
#define _GETDATA
struct PERSONDATA{
    char name[20];
    double age,mass;
};
typedef struct PERSONDATA person;
extern void getData(person *);
extern void getName(char *,int);
#endif

getData.c文件定义为;

#include <stdio.h>
void getData(person *ptr)
{
    printf("Enter name: ");
    getName(ptr->name,sizeof(ptr->name));
}

,getName.c文件定义为:

#include <stdio.h>
void getName(char *ptrName, int varSize)
{
    int i=0;
    do
    {
        *(ptrName++) = getchar();
        ++i;
        if(i==varSize) printf("array full, EXITING!\n");
    }while(*(ptrName-1)!='\n' && i<varSize);
}

最后,主要功能是:

#include <stdio.h>
#include "GETDATA.h"
int main(int argc, char **argv)
{
    person human1;
    printf("hello, world!\n\n");
    getData(&human1);
    return 0;
}

在编译程序时,我收到以下错误:

***C:/Users/Shoaib.Shoaib-PC/Google Drive/C workspace/C workspace codelite/StructPointerExample/getData.c:2:14: error: unknown type name 'person',
void getData(person *ptr)***

有人可以帮助我,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您应该使用声明的类型在所有文件中包含头文件,而不仅仅是在主文件中。