>>> 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 mo...@rodents-montreal.org / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B