Может ли alignof(char)
быть только 1?
Из неофициальной cppreference.com wiki:
Самое слабое (наименьшее) выравнивание - это выравнивание типов
char
,signed char
иunsigned char
, и обычно оно равно 1.
"Обычно" означает, что это может быть что-то другое.
Единственное, что устанавливает стандарт C относительно выравнивания char
(C11 N1570 6.2.8, пункт 1):
Требование выравнивания полного типа можно запросить с помощью выражения
_Alignof
. Типыchar
,signed char
иunsigned char
должны иметь самое слабое требование выравнивания.
Однако рассмотрим определение выравнивания (C11 N1570 6.2.8, абзац 1 и определено аналогично для С++ 11):
Согласование представляет собой целочисленное значение, определенное реализацией, представляющее количество байтов между последовательными адресами, в которых может быть выделен данный объект.
Из этого я не думаю, что выравнивание char
имеет смысл, но 1
из-за требования, что sizeof(char) ≡ 1
, что означает, что расстояние между соседними элементами char
может быть только 1
.
Это имеет смысл?