Delphi相当于Free Pascal的FPC定义?

时间:2014-01-16 23:29:54

标签: pascal freepascal lazarus delphi

是否存在编译器定义,告诉源代码是否使用delphi编译,在等同于Free Pascal中的FPC定义的意义上?

我正在开发一个应该与三个Pascal编译器兼容的单元(Lazarus / Free Pascal,Delphi和winsoft PocketStudio)。编译器之间存在一些差异,因此我想在编译器特定的版本中提供代码的一些关键部分。

对于Free Pascal,我可以写

{$IFDEF FPC}
  DoSomething;
{$ENDIF}

但是Delphi的等价物是什么?

3 个答案:

答案 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}