Spec-Zone.ru › GCC 11

Далее: @encode, Наверх: Кодирование типов [Содержание][Индекс]

8.3.1 Кодирование типов старого формата ¶

К сожалению, в истории GCC было несколько ошибок в коде кодирования. Среда выполнения NeXT ожидает, что GCC будет генерировать кодирования типов в этом историческом формате (совместимом с GCC-3.3), поэтому при использовании среды выполнения NeXT GCC намеренно будет вводить ряд неправильных кодирований:

  • квалификатор только для чтения для указанного типа выводится перед символом ’^’. Квалификатор только для чтения для самого указателя игнорируется, если это не псевдоним. Кроме того, символ ’r’ выводится только для внешнего типа.
  • 32-битные длинные целые числа кодируются как ’l’ или ’L’, но не всегда. Для псевдонимов компилятор использует ’i’ или ’I’ вместо этого, если кодируется поле структуры или указатель.
  • enum всегда кодируются как ’i’ (int), даже если они фактически являются беззнаковыми или длинными.

Кроме того, среда выполнения NeXT использует другое кодирование для полей битовых. Она кодирует их как b за которым следует размер, без смещения бита или типа базового поля.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Legacy-type-encoding.html

Spec-Zone.ru

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