Компилятор Free Pascal известен своей поддержкой нескольких режимов копиляции, для улучшения совместимости с TP, Delphi и др. У каждого режима свои особенности, если вы хотите подробнее узнать об отличиях или у вас есть вопросы по какому-то из них, задавайте их в этой теме.
Переключаются режимы либо добавлением ключа -M[режим] при компиляции, либо использованием специальных директив вида {$MODE [режим]} непосредственно в коде программы.
Немного о самих режимах.
FPC
Режим компилятора по-умолчанию. Поддерживаются все конструкции языка за исключением классов, интерфейсов и исключений. Объекты поддерживаются в этом режиме.
OBJFPC
Режим аналогичен FPC, но включает классы, интерфейсы и исключения.
TP
Режим совместимости с Turbo Pascal. В этом режиме компилятор насколько это возможно пытается быть похожим на компилятор Турбо Паскаля. Очевидно, что компилироваться в этом режиме будет только 32 или 64-битный код.
DELPHI
Режим совместимости с Delphi. В этом режиме, компилятор как может пытается повторять компилятор Delphi: Все особенности Delphi 7 включены. Особенности .NET версий Delphi не поддерживаются.
MACPAS
Режим совместимости с Mac Pascal. В этом режиме компилятор пытается позволить использовать все конструкции Маковского паскаля. В частности, пытается компилировать универсальные интерфейсы.
Пример переключения режима при помощи ключа компилятора:
То же самое будет если вы добавите следующую директиву перед описанием модулей:
Переключаются режимы либо добавлением ключа -M[режим] при компиляции, либо использованием специальных директив вида {$MODE [режим]} непосредственно в коде программы.
Немного о самих режимах.
FPC
Режим компилятора по-умолчанию. Поддерживаются все конструкции языка за исключением классов, интерфейсов и исключений. Объекты поддерживаются в этом режиме.
OBJFPC
Режим аналогичен FPC, но включает классы, интерфейсы и исключения.
TP
Режим совместимости с Turbo Pascal. В этом режиме компилятор насколько это возможно пытается быть похожим на компилятор Турбо Паскаля. Очевидно, что компилироваться в этом режиме будет только 32 или 64-битный код.
DELPHI
Режим совместимости с Delphi. В этом режиме, компилятор как может пытается повторять компилятор Delphi: Все особенности Delphi 7 включены. Особенности .NET версий Delphi не поддерживаются.
MACPAS
Режим совместимости с Mac Pascal. В этом режиме компилятор пытается позволить использовать все конструкции Маковского паскаля. В частности, пытается компилировать универсальные интерфейсы.
Пример переключения режима при помощи ключа компилятора:
| Код |
|---|
fpc -MOBJFPC myunit |
То же самое будет если вы добавите следующую директиву перед описанием модулей:
| Код |
|---|
{$MODE OBJFPC}
Unit myunit; |