【问题标题】:Compiling: [Error] array type has incomplete element type编译:[错误] 数组类型的元素类型不完整
【发布时间】:2016-04-07 19:33:23
【问题描述】:

我正在尝试完成的程序有问题,据我所知,我已经正确定义了结构,但是在编译时我得到这个错误代码 3 次,每个结构一次

错误信息:

    34  18 - [Error] array type has incomplete element type

我的代码如下所示,任何建议都将不胜感激,完整程序中有大约 300 行代码,如果您需要查看它,请告诉我,我不想让你们超载。再次感谢。

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

    void fileRead();
    void readGrades();
    void readResults();
    void pointCompute();
    void sortGrades();
    void print();

    typedef struct{
        char subject[15];
        char level[2];
        char grade[3];
        int points[3];
    } temp;
    typedef struct{
        char subject[15];
        char level[2];
        char grade[3];
        int points[3];
    } grades;

    typedef struct{
        char subject[15];
        char level[2];
        char grade[3];
        int points[3];
    } results;
    struct temp temp[50];
    struct grades grades[50];
    struct results results[50];

【问题讨论】:

    标签: c gcc struct compilation


    【解决方案1】:

    由于它们是 typedef,请从变量定义行中删除 struct。如果类型是实际的结构而不是 typedef,则输入 struct。另外,变量名不能与类型名相同。

    temp temp_var[50];
    grades grades_var[50];
    results results_var[50];
    

    【讨论】:

    • 我看到变量本身具有与 typedef 相同的标识符,你不能那样做。更改变量的名称
    • 这对您有很大帮助,感谢您快速清晰的回复! :)
    • 请注意,变量名可以与类型名同名(不包括int、char等,因为它们也是关键字),但必须在内部范围内声明。这称为遮蔽,在这种情况下,变量名称将遮蔽类型名称。顺便说一句,即使它是合法的,对变量和类型使用相同的名称也是个坏主意。
    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2022-06-25
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多