C - 帮助打印返回的Struct的成员

时间:2014-11-23 18:21:46

标签: c linux struct

我想返回一个结构并在main中打印其中一个成员。

我在尝试编译时收到此错误:

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);
    }

1 个答案:

答案 0 :(得分:2)

如果您想在struct busRoute中使用BusRoute.h,则应在BusRoute.c而非main.c中定义main.c。如果您的getBusRouteInfo()函数返回一个,那么 想要在main.c中使用它。如果struct busRoute无法看到此定义,则不知道busRouteNumber甚至名为getBusRouteInfoRouteNumber(2)的成员,更不用说如何获取它了,这就是编译失败的原因。

您的另一个选择是定义类似main.c的函数,它将间接返回相应的成员。这样,struct busRoute无需了解实际的{{1}}。