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