Keith said:
A C implementation *must* allow char objects to be stored at odd byte
addresses. It can choose to align all single declared char objects,
or even char struct members, at even addresses if that makes access
easier or faster, but there can be no padding between array elements:
char arr[2];
/* either arr[0] or arr[1] is at an odd byte address */
If the hardware doesn't allow this (or makes it too expensive), then
the implementation can make bytes bigger than 8 bits.
How do you define "odd byte address" ?
I don't see why you can't have 16-bit bytes, at addresses 0, 2, 4, ...
the point is, a byte is defined in C as the smallest uniquely
addressable object. Whether you choose to number adjacent objects
0,1,2... or 0,2,4 or pi, e, tau,.. is entirely up to you, but the
spacing between them is still unity....
--
Mark McIntyre
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it."
--Brian Kernighan