4.9 Структуры, объединения, перечисления и битовые поля
- Элемент объекта объединения обращается с использованием элемента другого типа (C90 6.3.2.3).
Соответствующие байты представления объекта обрабатываются как объект типа, используемого для доступа. См. Тип-пуннинг. Это может быть представление ловушки.
- Обрабатывается ли «простое»
intбитовое поле какsigned intбитовое поле или какunsigned intбитовое поле (C90 6.5.2, C90 6.5.2.1, C99 и C11 6.7.2, C99 и C11 6.7.2.1).По умолчанию оно обрабатывается как
signed int, но это можно изменить с помощью опции -funsigned-bitfields. - Допустимые типы битовых полей, отличные от
_Bool,signed int, иunsigned int(C99 и C11 6.7.2.1).Разрешены и другие целочисленные типы, такие как
long int, а также перечисленные типы, даже в строго совместимом режиме. - Разрешены ли атомарные типы для битовых полей (C11 6.7.2.1).
Атомарные типы не разрешены для битовых полей.
- Может ли битовое поле пересекать границу единицы хранения (C90 6.5.2.1, C99 и C11 6.7.2.1).
Определяется ABI.
- Порядок выделения битовых полей в пределах единицы (C90 6.5.2.1, C99 и C11 6.7.2.1).
Определяется ABI.
- Выравнивание элементов структуры, не являющихся битовыми полями (C90 6.5.2.1, C99 и C11 6.7.2.1).
Определяется ABI.
- Целочисленный тип, совместимый с каждым перечисленным типом (C90 6.5.2.2, C99 и C11 6.7.2.2).
Обычно, тип —
unsigned int, если в перечислении нет отрицательных значений, в противном случае —int. Если указана -fshort-enums, то если есть отрицательные значения, то это первый изsigned char,shortиint, который может представить все значения, в противном случае — это первый изunsigned char,unsigned shortиunsigned int, который может представить все значения.На некоторых целевых системах -fshort-enums является значением по умолчанию; это определяется ABI.
Далее: Реализация квалификаторов, Предыдущее: Реализация подсказок, Вверх: Реализация C [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Structures-unions-enumerations-and-bit-fields-implementation.html