是否存在编译器定义,告诉源代码是否使用delphi编译,在等同于Free Pascal中的FPC定义的意义上?
我正在开发一个应该与三个Pascal编译器兼容的单元(Lazarus / Free Pascal,Delphi和winsoft PocketStudio)。编译器之间存在一些差异,因此我想在编译器特定的版本中提供代码的一些关键部分。
对于Free Pascal,我可以写
{$IFDEF FPC}
DoSomething;
{$ENDIF}
但是Delphi的等价物是什么?
答案 0 :(得分:8)
{1}}定义已添加到XE2中的Delphi编译器中。在此之前,您必须使用DCC
语句来检查每个版本的Delphi是否存在单个{$IFDEF VERxxx}
定义,或者检查Delphi 6 +的VERxxx
语句。
答案 1 :(得分:2)
文档predefined conditionals
显示DCC
是一个预定义符号,可用于将Delphi与其他编译器分开。
答案 2 :(得分:0)
感谢您的提示。
基于它们,我现在可以发现,如果代码是使用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}