当前位置 : 主页 > 编程语言 > delphi >

delphi – 无法内联函数?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我只是为了易读性而声明了一些函数,我想检查编译器是否在内联它们.根据 this answer我想我可以将它们标记为内联并获得一个提示,如果它们没有内联,但是,当我尝试这样做时,我得到以下
我只是为了易读性而声明了一些函数,我想检查编译器是否在内联它们.根据 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 ON},但无济于事.我的Google-fu让我失望了,所以我在这里.

我正在使用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;
网友评论