字节顺序如何影响C ++中的枚举值?

时间:2010-11-06 23:39:55

标签: c++ enums porting endianness

字节顺序如何影响C ++中的枚举值?

枚举的大小是否取决于有多少枚举,因此一些枚举是1个字节,而其他枚举是2或4个字节?

如何从主机字节顺序将枚举值放入网络字节顺序?

3 个答案:

答案 0 :(得分:1)

枚举取决于编译器。它们可以是1,2或4个字节(请参阅here)。它们应该具有与它们所使用的平台相同的字节顺序。

要将枚举值放入特定的字节顺序,您需要知道您所使用的系统是什么以及网络期望的是什么。然后像对待int那样对待。有关转化的帮助,请参阅here

答案 1 :(得分:1)

Endianness影响枚举的次数不会少于或少于其他整数类型。

尺寸的唯一保证是枚举必须能够保持int的值;编译器可以根据定义的成员自由选择实际大小(免责声明:对于C来说肯定是这样,对C ++来说不是100%肯定;我会检查......)

答案 2 :(得分:0)

  1. 同样会影响其他一切。
  2. 编译器可以自由选择所需的最小空间。
  3. htons(),或者如果您知道有超过64k的值,则为htonl()。