2014-11-23 1 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

당신의 당신이 main.c에서 사용하려는 경우 struct busRouteBusRoute.h하지 BusRoute.c에 정의되어야한다. 그리고 main.c에 사용하려는 경우 getBusRouteInfo() 함수가 하나를 반환합니다. main.c이 정의를 볼 수 없다면 struct busRoutebusRouteNumber이라는 이름의 구성원 인이라는 것을 알지 못합니다. 컴파일 방법은 실패합니다.

다른 옵션은 적절한 멤버를 간접적으로 반환하는 getBusRouteInfoRouteNumber(2)과 같은 함수를 정의하는 것입니다. 이렇게하면 main.c은 실제 내용을 알 필요가 없습니다. struct busRoute.

+0

My Struct은 BusRoute.c에 보관해야하지만 두 번째 솔루션이 제대로 작동해야합니다. 나는 각 멤버에 대해 Get 함수를 사용하지 않기를 바랬다. – Flan

+0

인터페이스에 따라 각 구성원마다 하나씩 필요하지 않을 수 있으며 일반적으로이 작업을 수행하지 않도록 기본값으로 설정하면 안됩니다. 인터페이스는 필요한 논리 연산을 제공해야하며, 이는 데이터 구조의 개별 구성원에 해당하거나 그렇지 않을 수 있습니다. –

관련 문제