【问题标题】:C - Help printing a member of a returned StructC - 帮助打印返回的结构的成员
【发布时间】:2014-11-23 18:21:46
【问题描述】:

我想返回一个结构并在 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);
    }

【问题讨论】:

    标签: c linux struct


    【解决方案1】:

    如果您想在main.c 中使用它,您的struct busRoute 应该在BusRoute.h 中定义,而不是BusRoute.c。如果您的getBusRouteInfo() 函数返回一个,那么您确实想在main.c 中使用它。没有main.c 能够看到这个定义,它不知道struct busRoute 甚至 一个名为busRouteNumber 的成员,更不用说如何获得它了,所以这就是编译失败的原因。

    您的另一个选择是定义一个类似getBusRouteInfoRouteNumber(2) 的函数,它将间接返回适当的成员。这样,main.c 就不需要知道实际的 struct busRoute

    【讨论】:

    • 我的结构需要保存在 BusRoute.c 中,但您的第二个解决方案可以工作。不过,我希望避免为每个成员使用 Get 函数。
    • 根据您的界面,您可能不需要为每个成员提供一个,并且通常不应默认这样做。您的界面应提供您需要的逻辑操作,这些操作可能对应于数据结构的各个成员,也可能不对应。
    猜你喜欢
    • 2011-12-19
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2012-08-30
    • 1970-01-01
    • 2011-10-05
    • 2019-07-28
    相关资源
    最近更新 更多