如何在Delphi中使用宏?

如何在Delphi中使用宏?,delphi,delphi-xe6,Delphi,Delphi Xe6,如何在Delphi中使用宏?这项功能在FPC中已经有相当一段时间了。可以通过构建前或构建后事件来完成吗 例如: {$define sum:=a:=a+b;} 您不能在Delphi中使用宏。不存在这样的功能。最接近的内置功能是内联函数 您当然可以编写自己的预处理器来扩展宏。但是,您将无法使其与IDE很好地集成。至少,不是我认为可以接受的方式。 问题在于将宏扩展到何处。您很难将其扩展到原始文件,因为您无法实际修改该文件。所以您需要扩展到一个临时文件。而且编译器没有任何从临时文件构建的机制。我想

如何在Delphi中使用宏?这项功能在FPC中已经有相当一段时间了。可以通过构建前或构建后事件来完成吗

例如:

{$define sum:=a:=a+b;}  

您不能在Delphi中使用宏。不存在这样的功能。最接近的内置功能是内联函数

您当然可以编写自己的预处理器来扩展宏。但是,您将无法使其与IDE很好地集成。至少,不是我认为可以接受的方式。


问题在于将宏扩展到何处。您很难将其扩展到原始文件,因为您无法实际修改该文件。所以您需要扩展到一个临时文件。而且编译器没有任何从临时文件构建的机制。我想您可以扩展到包含文件。这可能是最好的选择,但与之合作将是可怕的。例如,考虑调试时的乐趣。

在Delphi中不能使用宏。不存在这样的功能。最接近的内置功能是内联函数

您当然可以编写自己的预处理器来扩展宏。但是,您将无法使其与IDE很好地集成。至少,不是我认为可以接受的方式。



问题在于将宏扩展到何处。您很难将其扩展到原始文件,因为您无法实际修改该文件。所以您需要扩展到一个临时文件。而且编译器没有任何从临时文件构建的机制。我想您可以扩展到包含文件。这可能是最好的选择,但与之合作将是可怕的。例如,考虑调试时的乐趣。

< P> Delphi不提供宏的内置功能。也许正是您想要的。

Delphi不提供宏的内置功能。也许正是您所需要的。

您可以使用外部预处理器。你似乎错过了这一点。很明显,你可以编写任何你喜欢的外部工具来生成代码,但根据这个问题,这并不是真的在Delphi中使用宏。我同意内联看起来很像cpp中的宏world@stanleyxu2005您不能总是内联。文档中有很多列表。@user3764855因为Delphi没有宏,而且编写自己的预处理器可能不方便,所以您可以告诉我们问题的动机,我们可以看看是否可以就最好的Delphi解决方案提供建议。您可以使用外部预处理器。你似乎错过了这一点。很明显,你可以编写任何你喜欢的外部工具来生成代码,但根据这个问题,这并不是真的在Delphi中使用宏。我同意内联看起来很像cpp中的宏world@stanleyxu2005您不能总是内联。文档中有很多列表。@user3764855因为Delphi没有宏,而且编写自己的预处理器可能不方便,也许您可以告诉我们是什么激发了这个问题,我们可以看看是否可以就最好的Delphi解决方案提供建议。嗯,如果我们准备使用其他工具,那么问题中提到的FPC听起来像一个候选者。……好吧,如果我们准备使用其他工具,那么问题中提到的FPC听起来像一个候选者。……FPC中的宏适用于一些简单的情况,比如简单的{$ifdef mswindows}stdcall{$else}cdecl{$endif}宏。它们不适用于一般编程,这就是它们不可参数化的原因。泛型和内联确实是普通C使用宏的合适解决方案。您考虑的是条件符号。{$DEFINE}在FreePascal中比在Delphi中更灵活。FreePascal支持定义可在编译时替换为代码的完整表达式,类似于C预处理器宏。阅读FreePascal文档。@RemyLebeau我想在FPC中使用{$Macro ON}当使用{$Macro ON}时,{$DEFINE}可以定义表达式,而不仅仅是符号名。这种扩展宏并不适用于简单的情况,而是适用于一般编程。这就是我不同意你先前评论的原因。@RemyLebeau是的,我希望这是在德尔福。非常有用。FPC中的宏适用于一些简单的情况,如简单的{$ifdef mswindows}stdcall{$else}cdecl{$endif}宏。它们不适用于一般编程,这就是它们不可参数化的原因。泛型和内联确实是普通C使用宏的合适解决方案。您考虑的是条件符号。{$DEFINE}在FreePascal中比在Delphi中更灵活。FreePascal支持定义可在编译时替换为代码的完整表达式,类似于C预处理器宏。阅读FreePascal文档。@RemyLebeau我想在FPC中使用{$Macro ON}当使用{$Macro ON}时,{$DEFINE}可以定义表达式,而不仅仅是符号名。这种扩展宏并不适用于简单的情况,而是适用于一般编程。这就是我不同意你的观点
更早的评论。@RemyLebeau是的,我希望这是在Delphi中。非常有用。