我只是为了易读性而声明了一些函数,我想检查编译器是否在内联它们.根据 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;