【问题标题】:Knowing if the code is compiled using Lazarus or Delphi了解代码是使用 Lazarus 还是 Delphi 编译的
【发布时间】: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


【解决方案1】:

这个问题的答案已经在 cmets 中提供了,我这里只复制核心部分:

使用{$IFDEF FPC} 检测 FreePascal

【讨论】:

  • 与其他一些标签不同,让我们防止Delphi的q/a比恶化。 “不应留下任何德尔福问题”等。
  • 虽然我同意您评论中的观点,但该比率的下降很大程度上与问题的质量有关......
  • 也许(虽然肯定有标签的问题更糟),但是这个问题很好。我们中的大多数人只是在多年接触相关源代码后才知道这一点,但它并没有以这样一种方式记录下来,即如果你不使用正确的术语,谷歌就会发现它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-19
相关资源
最近更新 更多