Принятый ответ («Нет») правильный, но я хотел уточнить одну потенциально вводящую в заблуждение часть.Я бы добавил комментарий, но мне нужно отформатировать код;следовательно, новый ответ.
typedefs - это просто псевдонимы или псевдонимы для заданного фактического типа, они не существуют как отдельный тип, чтобы иметь различное выравнивание, упаковку и т. д.
Это неверно, по крайней мере для GCC (компилятор OP) и GHS.Например, следующие компиляции без ошибок показывают, что выравнивание может быть прикреплено к typedef.
Извращенное выравнивание (больше, чем размер объекта) просто для шока и развлечениязначение.
#define CASSERT( expr ) { typedef char cassert_type[(expr) ? 1 : -1]; }
typedef __attribute__((aligned(64))) uint8_t aligned_uint8_t;
typedef struct
{
aligned_uint8_t t;
} contains_aligned_char_t;
void check_aligned_char_semantics()
{
CASSERT(__alignof(aligned_uint8_t) == 64);
CASSERT(sizeof(aligned_uint8_t) == 1);
CASSERT(sizeof(contains_aligned_char_t) == 64);
}