Spec-Zone.ru › GCC 15

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.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Structures-unions-enumerations-and-bit_002dfields-implementation.html

Spec-Zone.ru

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