Delphi эквивалентно FPC определения Free Pascal?
Есть ли определение компилятора, которое сообщает, скомпилирован ли исходный код с delphi, в смысле эквивалента определению FPC в Free Pascal?
Я разрабатываю модуль, который должен быть совместим с тремя компиляторами Pascal (Lazarus / Free Pascal, Delphi и winsoft PocketStudio). Между компиляторами есть некоторые различия, поэтому я хотел бы предоставить некоторые критические части кода в конкретной версии компилятора.
Для Free Pascal я могу написать
{$IFDEF FPC}
DoSomething;
{$ENDIF}
но что эквивалентно Delphi?
3 ответа
DCC
define был добавлен в компилятор Delphi в XE2. До этого вы должны были использовать {$IFDEF VERxxx}
заявления для проверки на наличие отдельных VERxxx
определяет для каждой версии Delphi, или {$IF DECLARED(CompilerVersion)}
заявление для Delphi 6+.
Документация predefined conditionals
показывает, что DCC
это предопределенный символ, который можно использовать для отделения Delphi от других компиляторов.
Спасибо за ваши советы.
Основываясь на них, я могу теперь узнать, скомпилирован ли код с Delphi или Free Pascal со следующими утверждениями:
{$IFDEF VER80} {Delphi 1}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER90} {Delphi 2}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER100} {Delphi 3}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER120} {Delphi 4}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER130} {Delphi 5}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER140} {Delphi 6}
{$DEFINE DELPHI}
{ DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER150} {Delphi 7}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER160} {Delphi 8}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER170} {Delphi 9}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER180} {Delphi 10}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER185} {Delphi 11 - Spacely}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER190} {Delphi 11 - Highlander and Delphi 12}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER200} {Delphi 12}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF VER210} {Delphi 2010}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF DCC} {Delphi XE and newer versions}
{$DEFINE DELPHI}
DoSomeSpecificStuff;
{$ENDIF}
{$IFDEF FPC] {Lazarus and Free Pascal}
DoSomeSpecificStuff;
{$ENDIF}