使用结构未定义标识符

Identifier is undefined using structs

只是一个(希望)快速而简单的问题,我似乎无法弄清楚。我正在做一个项目,这段代码是讲师给我们的,我一辈子都弄不明白为什么编译器认为 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,所以我可能缺少一些简单的东西,所以这就是我转向 SO 的原因。有人告诉我,我可以将它从讲师那里放到我的代码中,它就会起作用。希望有人能解决这个问题。谢谢!

您使用的是 C,而不是 C++。你已经定义了一个类型struct PartitionTableEntry;你没有定义类型 PartitionTableEntry,所以编译器会报错。

在 C++ 中情况会有所不同,但您不是在用 C++ 编写代码。

要解决此问题,您可以在开始定义 struct MBRStruct 之前添加 typedef struct PartitionTableEntry PartitionTableEntry;,或者您可以在 struct MBRStruct.

中使用 struct PartitionTableEntry