Spec-Zone.ru › GCC 4

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-4.9.4/gcc/Legacy-type-encoding.html

Spec-Zone.ru

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