Подскажите, а расположение полей в памяти гарантируется как-либо?
(если не брать в расчет выравниваение)
Как в сишечке - получили указатель на структуру и знаем, что все поля друг за другом идут в ней.
Или в СИ это тоже не гарантировалось?
Ну, если использовать макрос в Си, то там немного меняется порядок для оптимизации если нужно, а так да, в Си все по порядку, за исключением данных, на которые указывает указатель и пустот, и если размер типа меньше нужного, то могут быть пустоты.