First off, the C standard mandates that the order of
fields in a
struct cannot be reordered,
Yes. (I think this is a Bad Thing, but I can see why
they did it.)
Given that C is a systems implementation language, how would you
define HW related data structures where the order of the fields is
critical (ie HW defines them).
I can see three answers.
1) Don't use structs for that. Look at NetBSD's bus-space abstraction
for one possible way.
2) Make any reordering implementation-defined, so that code for
specific implementations can know how the implementation does it.
3) Make reordering optional. Which way the default should go is
arguable; since my guess is that most structs are not
hardware-interface structs, the default should be reordering, with
some keyword specifying no reordering.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse at
rodents-montreal.org
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B