Naja, ich verwend' es nur bei Daten-strukturen, denn da müssen die Daten ja geschlossen u. lückenlos definiert sein.

Das mit dem "nur mit struct" könnt' schon sein, denn ausserhalb von struct legt der Compiler die Variablen offenbar dort an, wo es ihm gerade einfällt. (alphabetisch?). Ich weiss jetzt garnicht, ob es einen Anspruch darauf gibt, dass der Kompiler die Variablen in der Folge anlegt, wie die angegeben werden ?
Das ist von akademischen Interesse, daher würd ich an deiner stelle, damit was weitergeht, eben eine struct konstruieren, wo die Variablen drin stehen, die ich beieinander haben möchte. da hat der Kompiler dann keine Ausflüchte.

Dass "sizeof" richtige Werte liefert, wundert mich nicht, denn, ich schwör's, das wär schon aufgefallen.

Aber wer checkt schon, an welcher Adresse seine Variablen liegen, und ob es dazwischen Lücken gibt.
(Natürlich µC Programmierer, denn die müssen jedes Byte zweimal umdrehen, bevor sie es belegen )