2016-01-02 67 views
-2

我想用帶有指向該結構的指針作爲參數的函數原型來定義頭文件中的結構。帶有使用關鍵字「extern」的結構和函數原型的頭文件

#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)*** 

可能有人認爲在這裏幫助我,任何幫助非常感謝!

+0

'getData.c'需要包含頭文件('GETDATA.h'?)。 – pat

回答

1

您應該使用聲明的類型在所有文件中包含頭文件,而不僅僅是在主文件中。

+0

是的,你是對的!非常感謝。 –