Раньше так делал, работает, но не так удобно, надо все сводить в
один файл, в котором будет куча записей типа #define address_of_var2 ALIGN2(address_of_var1+sizeof(var1))
#define address_of_var3 ALIGN2(address_of_var2+sizeof(var2))
В один файл сводить что бы ни чего не забыть и не перепутать.
Адрес элемента переменной простым &var2.fld1 или &var2.fld2[n] уже не получится, придется что-то типа (address_of_var2+offsetof(type_var2,fld1)) или
(address_of_var2+offsetof(type_var2,fld2)+sizeof(type_var2,fld2[0])*n) Т.е. не так наглядно, проще ошибиться.