2015-09-20 46 views
0

Homework.h的TypeDef結構在頭文件中定義

#ifdef HOMEWORK_H_ 
#define HOMEWORK_H_ 

typedef struct 
{ 
     int IDNumber; 
     char FirstName[30]; 
     char LastName[30]; 
}Student; 

int AddStudent(); 
#endif 

GradeFunctions.c

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include "Homework.h" 

#define MAX 100 

int AddStudent() 
{ 
     int i; 
     int StuNumber = 0; 

     Student store[MAX]; 

     for(i = 0; i < 0; i++) 
     { 
       if(Strlen(store[i].FirstName) > 0) 
       { 
         if(Strlen(store[i].LastName) > 0) 
         { 
           if(Strlen(store[i].IDNumber) > 0) 
           { 
             int StuNumber = i; 
             break; 
           } 
         } 
       } 
     } 
     printf("Please enter the students first name: "); 
     scanf("%s", store[StuNumber].FirstName); 
     printf("\n"); 
     printf("Please enter the students last name: "); 
     scanf("%s", store[StuNumber].LastName); 
     printf("\n"); 
     printf("Please enter the students ID Number: "); 
     scanf("%d", &store[StuNumber].IDNumber); 
     printf("\n"); 
     return 0; 
} 

我把每一次我嘗試編譯

GradeFunctions.c: In function ‘AddStudent’: 
GradeFunctions.c:13:2: error: unknown type name ‘Student’ 
GradeFunctions.c:17:21: error: request for member ‘FirstName’ in something not a structure or union 
GradeFunctions.c:19:22: error: request for member ‘LastName’ in something not a structure or union 
GradeFunctions.c:21:23: error: request for member ‘IDNumber’ in something not a structure or union 
GradeFunctions.c:30:30: error: request for member ‘FirstName’ in something not a structure or union 
GradeFunctions.c:33:30: error: request for member ‘LastName’ in something not a structure or union 
GradeFunctions.c:36:31: error: request for member ‘IDNumber’ in something not a structure or union 

我花了時間收到此錯誤最近幾個小時試圖找到一個原因,這是發生在我的教科書和在線,但沒有AVA金正日。我究竟做錯了什麼?

+0

嵌套'if'太多了。 –

+0

標準庫中沒有'Strlen()'這樣的東西。 – 3442

+0

@KemyLand我認爲這是大寫'S'的原因,因爲他們的老師需要它的實現,而不是使用庫函數。但是,OP應該知道'store [i] .FirstName [0]!='\ 0''與'strlen(store [i] .FirstName)== 0'具有相同的效果。而且,許多'if'嵌套就像這樣會讓你閱讀你的代碼非常不愉快。請改進設計以避免這種情況。例如,使用'continue'。 –

回答

3
#ifdef HOMEWORK_H_ 

應該是

#ifndef HOMEWORK_H_ 
    ^^^ Missing n 

由於該文件的內容不包含在所述代碼庫。

+2

#1我每天更喜歡'#pragma once'的原因。 – 3442

+0

好吧,現在我覺得自己很愚蠢。< – Arrowkill

+0

@KemyLand,你可以這麼說。就在上個星期,我經歷了一個龐大的代碼庫,並且在每個頭文件中添加了'#pragma once',當然使用腳本。 –