OSDev.org
https://forum.osdev.org/

Thoughts on enum types and bit packing
https://forum.osdev.org/viewtopic.php?f=13&t=36918
Page 1 of 1

Author:  pANZERNOOb [ Tue Jun 23, 2020 5:06 pm ]
Post subject:  Thoughts on enum types and bit packing

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?

Author:  nullplan [ Tue Jun 23, 2020 7:53 pm ]
Post subject:  Re: Thoughts on enum types and bit packing

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.

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/