Spec-Zone.ru › GCC 9

4.9 Структуры, объединения, перечисления и битовые поля

  • Элемент объекта объединения доступен с помощью элемента другого типа (C90 6.3.2.3).

    Соответствующие байты представления объекта обрабатываются как объект типа, используемого для доступа. См. Type-punning. Это может быть ловушечное представление.

  • Обрабатывается ли «обычное» 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-9.5.0/gcc/Structures-unions-enumerations-and-bit-fields-implementation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API