delphi - 不能内联函数吗?

标签 delphi inline

我声明了一些函数只是为了便于阅读,我想检查编译器是否内联它们。根据this answer我想我可以将它们标记为内联,并在它们未内联时获得提示,但是,当我尝试这样做时,我收到以下错误:

[dcc32 Error] MyClass.pas(266): E1030 Invalid compiler directive: 'INLINE'

所以我用一个简单的函数尝试了它:

procedure TMyClass.Swap(var a, b : Integer); inline;
var
  c : Integer;
begin
  c := a;
  a := b;
  b := c;
end;

唉,我也遇到同样的错误。根据the docs默认值为 {$INLINE ON},所以我假设我只需要添加 inline;。尽管如此,我尝试声明 {$INLINE ON},但无济于事。我的 Google 失败了,所以我来了。

我使用的是 Delphi 10.1 Berlin。

最佳答案

您将其放在实现中,而不是声明中。将其放在实现上将适用于独立函数和过程,但不适用于类方法。这些必须在声明本身中定义为内联

interface

type
  TMyClass = class(TObject)
  private
    procedure Swap(var a, b: integer); inline;
  end;

implementation 

procedure TMyClass.Swap(var a, b:integer);
begin
  //
end;

关于delphi - 不能内联函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50806793/

相关文章:

sql-server - C++ Builder 和 ADO - 如何在触发器执行后显示正确的值?

css - 更改 Fancybox iframe css 内联

fortran - 内联关键字 gfortran

CSS 处理 div 溢出

c++ - 为什么我的模板函数不能内联

delphi - 如何在Delphi中重载记录分配运算符

delphi - 替换 .manifest 文件的命令行工具

html - 行为异常的 block 元素

Delphi XE2 64 位客户端连接到 Firebird 2.5

delphi - 开放数组参数、类和字符串是否通过引用传递?