At 08:44 16.04.2009 +0200, you wrote: >At 08:38 16.04.2009 +0200, Philipp Marek wrote: >>Hello everybody, >> >>I'd like to know whether there's some way to get a structure aligned on a non- >>aligned address. >> struct { >> unsigned char count; >> struct something_else_t array[]; >> } >> >>Now I'd like to have the array (where each element has eg. 16, 32, or 48 >>bytes) aligned - on at least a 4 byte boundary, but better still on 8/16/64 >>bytes. > >Why don't you fill in dummy members to get the correct alignment? >Like > > struct { > unsigned char count; > unsigned char dummy[7]; // for 8 byte alignment > struct something_else_t array[]; > } > >You'd lose that memory anyway if the compiler aligns it himself. I overlooked the packed requirement, but in that case you can just turn it around: struct { unsigned char dummy[7]; // for 8 byte alignment unsigned char count; struct something_else_t array[]; } Align the struct to 8 bytes and you have your array aligned to 8 bytes. bye Fabi