代码之家  ›  专栏  ›  技术社区  ›  1Poseidon3

标识符未使用结构定义

  •  0
  • 1Poseidon3  · 技术社区  · 2 年前

    只是一个(希望如此)快速而简单的问题,我似乎无法理解。我正在做一个项目,这段代码是讲师给我们的,我一辈子都搞不懂编译器为什么这么想 PartitionTableEntry 当它在代码中位于它的正上方时,它是未定义的。

    struct PartitionTableEntry
    {
        unsigned char bootFlag;
        unsigned char CHSBegin[3];
        unsigned char typeCode;
        unsigned char CHSEnd[3];
        unsigned int LBABegin;
        unsigned int LBAEnd;
    };
    
    struct MBRStruct
    {
        unsigned char bootCode[446];
        PartitionTableEntry part1;   // These lines
        PartitionTableEntry part2;   // right here
        PartitionTableEntry part3;   // is where the
        PartitionTableEntry part4;   // issue is
        unsigned short flag;
    } MBR;
    

    我对C不是很精通,所以我可能缺少一些简单的东西,这就是为什么我要这么做。有人告诉我,我可以直接从指导老师那里把这个输入到我的代码中,这样就行了。希望有人能弄明白。谢谢

    1 回复  |  直到 2 年前
        1
  •  3
  •   Jonathan Leffler    2 年前

    你在C中编码,而不是C++。你已经定义了一个类型 struct PartitionTableEntry ; 您尚未定义类型 PartitionTableEntry ,所以编译器抱怨。

    这个故事在C++中会有所不同,但是你并没有在C++中编码。

    要解决这个问题,您可以添加 typedef struct PartitionTableEntry PartitionTableEntry; 在你开始定义之前 struct MBRStruct ,也可以使用 结构分区表条目 在…内 结构mbr结构 .