Spec-Zone.ru › GCC 12

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

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

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

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

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

Spec-Zone.ru

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