2014-11-23 69 views
0

我想返回一個結構並在main中打印它的一個成員。C - 幫助打印返回結構的成員

Main.c: In function ‘main’: 
Main.c:8:2: error: invalid use of undefined type ‘struct busRoute’ 

任何幫助,將不勝感激:

當試圖編譯我得到這個錯誤。我不明白爲什麼我想要做的事不會編譯。

BusRoute.c

#include <stdio.h> 
    #include "BusRoute.h" 

    struct busRoute { 
     int busRouteNumber; 
     char *startingLocation; 
     char *endingLocation; 
     char driverName[36]; 
    } route[STRUCT_SIZE] = {0}; 

    //retrieves route info 
    struct busRoute getBusRouteInfo(unsigned int index) 
    { 
     return route[index]; 
    } 

    void setStruct() 
    { 
     route[2].busRouteNumber = 5; 
    } 

main.c文件,

#include <stdio.h> 
    #include "BusRoute.h" 

    int main() 
    { 
     setStruct(); 
     printf("%d",getBusRouteInfo(2).busRouteNumber); 
    } 

回答

2

struct busRouteBusRoute.h,不BusRoute.c定義,如果你想在main.c使用它。而你想在main.c中使用它,如果你的getBusRouteInfo()函數返回一個。如果沒有main.c能夠看到這個定義,它不知道struct busRoute甚至成員名爲busRouteNumber,更不用說如何得到它,所以這就是編譯失敗的原因。

您的其他選項是定義一個函數,如getBusRouteInfoRouteNumber(2),它將間接返回相應的成員。這樣,main.c不需要知道任何關於實際的struct busRoute

+0

我的結構需要保存在BusRoute.c中,但你的第二個解決方案可以工作。我希望避免每個成員都有一個Get函數。 – Flan 2014-11-23 18:35:09

+0

根據您的界面,您可能不需要每個成員都需要一個,並且通常不應該默認這樣做。你的界面應該提供你需要的邏輯操作,這些操作可能對應或不對應你的數據結構的個別成員。 – 2014-11-23 18:38:07