Re: Aligning on some odd address?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux