1.2.75. $T или $TYPEDADDRESS : Тип оператора адреса (@)

На верх  Назад  Вперёд

В состоянии {$T+} или {$TYPEDADDRESS ON}, оператор @, если он имеется в имени переменной, возвращает результат типа ˆT, если тип переменной – это T. В состоянии {$T-}, возвращаемый результат – это всегда нетипизированный указатель, который всегда совместим с другими типами указателей.

Например, следующий код не будет компилироваться:

{$T+}
 
Var
  I : Integer;
  P : Pchar;
begin
  P:=@I;
end.

Компилятор выдаст ошибку несоответствия типов:

testt.pp(8,6) Error: Incompatible types: got "^SmallInt" expected "PChar"

                   (Ошибка: несовместимые типы: получено "^SmallInt", ожидалось "Pchar")

По умолчанию оператор адреса возвращает не типизированный указатель.