【发布时间】:2013-06-21 10:52:44
【问题描述】:
我正在尝试编写一个可以由 Lazarus 和 Delphi 编译而无需更改的代码。但为此,需要一个条件语句或类似的东西来检查正在使用哪个编译器。那么是否有任何指令或任何可能知道代码是用 Lazarus 还是 Delphi 编译的?
【问题讨论】:
-
FreePascal 编译器(在其默认模式下)定义了
FPC指令,查看例如这个unofficial article. -
回答这个问题的最简单方法是查看一些针对这两种编译器的开源代码。例如,GR32。很多
VERXXX的 ifdef,然后是FPC的 ifdef。从这样的好项目中学习。 -
感谢提示,我会试试的
-
Indy 10 针对 Delphi、C++Builder、FreePascal/Lazarus 和 .NET,因此在其
IdCompilerDefines.inc文件中有很多有用的 IFDEF 和 DEFINE。 -
一定要使用
{$IFDEF FPC}。在最近的版本中,Delphi (终于)开始定义自己的DCC定义:{$IFDEF DCC}。
标签: delphi compiler-construction compilation lazarus