2013-12-01 4 views
0

Я хочу знать, если бы я имел такую ​​конструкцию:структура выравнивание данных для полукокса

typedef struct { 
    char element; 
} element_t; 

Так что теперь есть условие:

sizeof(elem.element) == sizeof(element_t) == 1 

верно только для некоторых архитектур или это всегда так ? То есть, любое выравнивание может происходить здесь, так что это может быть:

(sizeof(elem.element) == 1) != (sizeof(element_t) == 4) 

, если данные в структурах совмещены с границами 4-байтовых в 32-битной архитектурой.

ответ

2

sizeof(elem.element) Гарантийное обслуживание: 1 (только у нас нет гарантий, что он будет содержать только 8 бит).

Там нет никакой гарантии, что sizeof(element_t) == 1, хотя на все практические архитектуры, я считаю, что это будет иметь размер 1.

+0

Да, это то, что я думал, спасибо человеку! – stanleysts

+0

Поддержка ответа Джона: http://stackoverflow.com/questions/2215445/are-there-machines-where-sizeofchar-1 – codnodder

Смежные вопросы