What type should I use for binary representation of C enum?
As I know C en开发者_StackOverflow社区um is unsigned integer, but this may vary by implementation. What type should I use for the enum in binary representation?
*PS 'binary representation' means byte-array. I want to serialize enum values to socket to inter-operate with other programs.
It's up to the compiler to use an int
to represent an enum
type, or a long
if an int
is not sufficient to hold all the values of the enum
.
If you know that all your enum
values can be represented by an int
, then you can safely use int
as the binary representation of your enum
values.
As enums are just fancy ways to set integers, you should go for an integer type big enough to store all you enum values. Normally, a char should suffice and then there are no serialization issues. But I'd go for a short or a long instead. When serializing, I'd use ntohs/htons
or ntohl/htonl
(see their man pages) to always make sure the serialization is in network byte order and the deserialization is in host byte order.
How about xdr
- library routines for external data representation?
Reinventing the wheel rarely produces something better.
精彩评论