使用结构未定义标识符
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
只是一个(希望)快速而简单的问题,我似乎无法弄清楚。我正在做一个项目,这段代码是讲师给我们的,我一辈子都弄不明白为什么编译器认为 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