Всегда ли struct
выровнен так же, как элемент наибольшего выравнивания этой структуры? Если нет, то как это может быть реализовано автоматически, возможно, с помощью специфичного для gcc расширения? (Я знаю, что есть __attribute((aligned(...)))__
, но выравнивание должно быть указано явно).
Отличается ли это поведение между c99, c ++ 99 и c ++ 11? Есть ли в c ++ 11 дополнительные условия для обеспечения выравнивания?
Пример:
С помощью следующего кода само Foo
будет автоматически выровнено до 8 байт, или мне нужно также выровнять его явно?
struct Foo{
int i __attribute__((aligned(8)));
};