8

我正在寻找一个预定义的符号来编写这样的代码:

{$IFDEF LAZARUS}
// code compiles by fpc/lazarus
{$ELSE}
// code compiles by delphi
{$ENDIF}
4

2 回答 2

13

采用FPC             

{$IFDEF FPC}
于 2012-08-30T15:09:15.587 回答
1

对于 GUI 应用程序 afaik,“ LCL ”符号在 Lazarus 项目中定义。在这种情况下,它可能无关紧要。

一般来说,对于更大的代码库,我会避免在你的源代码中包含太多的 ifdef FPC/LCL 和 ifdef。它使添加异常或其他版本变得更加困难。

使用 JCL 和 Zeos(7) 之类的系统,您可以在其中为大多数差异指定一个自己的名称(例如“USE_FPCUNIT”或“USE_DUNIT”)并将它们链接到中央包含文件中的版本。

有关该主题的简短论文,请参见http://www.stack.nl/~marcov/porting.pdf(第 2 章)

Ps 我会认为 Pocketstudio、TP、GPC、VP 和 WDSybil(以及我忘记的任何东西)对于大多数实际用途来说已经死了,并且字节码变体 Canterbury Pascal/Component Pascal/Oxygene/Prism/Delphi.NET 不兼容(无论如何,大多数都比 Pascal 更多 Oberon )。这几乎让 Delphi、Kylix 和 FPC 担心。

于 2012-09-06T08:43:09.150 回答