Thoughts on enum types and bit packing

Programming, for all ages and all languages.
Post Reply
pANZERNOOb
Posts: 2
Joined: Thu Jul 18, 2013 3:48 am

Thoughts on enum types and bit packing

Post by pANZERNOOb »

So I want other people's opinions on a couple of programming practices I've been using on and off.
First using enum types (in C) to define multiple constants in a group, for example creating a enum type for GDT flags bitmasks.
I know I'm making a type for these constants that I never actually use but should I just convert this into a series of #defines?

And then if I use bit packed structs to make bitmasks using bool types for values that don't have a particular location ie a set of flags for my own implementation of driver management, would I have to worry about different compilers putting bits in different orders?
nullplan
Member
Member
Posts: 1766
Joined: Wed Aug 30, 2017 8:24 am

Re: Thoughts on enum types and bit packing

Post by nullplan »

pANZERNOOb wrote:So I want other people's opinions on a couple of programming practices I've been using on and off.
First using enum types (in C) to define multiple constants in a group, for example creating a enum type for GDT flags bitmasks.
I know I'm making a type for these constants that I never actually use but should I just convert this into a series of #defines?
The two are equivalent in most cases. Only difference is, macros can be used in #if. Otherwise there is not much of a difference.
pANZERNOOb wrote:And then if I use bit packed structs to make bitmasks using bool types for values that don't have a particular location ie a set of flags for my own implementation of driver management, would I have to worry about different compilers putting bits in different orders?
If all compilers follow the same ABI, or at least all ABIs say the same about bitfields, or you only ever compile the entire project with one compiler at a time, there is nothing to worry about. You should start worrying when you want to transmit such a structure somewhere, whether into shared memory, a file, or network.
Carpe diem!
Post Reply