Spec-Zone.ru › GCC 10

Далее: @encode, Вверх: Кодирование типов [Оглавление][Индекс]

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

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

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

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

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

Spec-Zone.ru

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