In fact, that the bit positions must be hardcoded breaks the abstraction and the generality of the code. While sometimes I would like to know the actual bit positions (which should be an option), normally I'd rather the compiler just string together bits as necessary in the order they are declared, also adding additional bytes as necessary.That's all well and good, but having a type "bit" type that means the same thing in both cases, leads to equivalent generated code in both cases, would be good language design. I accept that C can do many things when these idiosyncrasies are understood, I just disapprove of them being idiosyncratic.
I mean if "unsigned <identifier> : <integer>" really means bit why can't one declare a local variable as that type? The "bit" notation is only allowed inside a struct!




