我可以使用枚举作为结构名称吗?

时间:2013-12-17 12:25:07

标签: c++ c enums

我认为它可能被称为文字?

enum packet_structures{
   PacketOne,
   PacketTwo,
   PacketThree
};

struct PacketOne{
 unsigned int packet_id;
};
struct PacketTwo{
 unsigned int packet_id;
};

struct PacketThree{
 unsigned int packet_id;
};

让我说我有一个通用数据包。

struct PacketGeneral{
 packet_structures TypeOfPacket;
};

PacketGeneral newPacket;

newPacket.TypeOfPacket = PacketOne;

我可以直接使用该枚举的名称将char *类型转换为结构(即PacketOne)吗?在不必使用(struct PacketOne)进行类型转换的情况下,我如何只使用枚举newPacket.TypeOfPacket对类似的结构进行类型转换?

2 个答案:

答案 0 :(得分:2)

不,你不能。枚举用于存储文字,而不是标识符。

答案 1 :(得分:-1)

不,至少不在C

enum声明/定义常量标识符。

因此,您不能再使用那些相同的标识符作为结构标记名称。

您可以通过编译包含这些声明/定义的程序来检查。