Spec-Zone.ru › GCC 5

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

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

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

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

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

Spec-Zone.ru

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