我声明了一些函数只是为了便于阅读,我想检查编译器是否内联它们。根据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/