在 Delphi 中,是否有一种声明过程为另一个过程的别名的方法?类似于:
function AnAliasToUpperCase(const S: AnsiString): AnsiString = system.AnsiStrings.UpperCase;
在程序后面调用 AnAliasToUpperCase
或 UpperCase
必须完全相同。
在 Delphi 中,是否有一种声明过程为另一个过程的别名的方法?类似于:
function AnAliasToUpperCase(const S: AnsiString): AnsiString = system.AnsiStrings.UpperCase;
在程序后面调用 AnAliasToUpperCase
或 UpperCase
必须完全相同。
比如将其定义为常量声明:
const
AliasToUpperCase: function(const S: AnsiString): AnsiString = System.AnsiStrings.UpperCase;
可能适合您的需求。
call dword ptr [<addr of the const>]
。 - Stefan Glienke对于“如何创建函数/过程别名”的问题,正确的答案是“你无法这样做”。
但是有两种模拟方法可以实现这一点,但都可能会引入一些开销-第一种是使用const,如其他答案所示。
除了将其声明为const之外,您还可以将其声明为新的内联例程:
function AliasToUpperCase(const S: AnsiString): AnsiString; inline;
begin
Result := System.AnsiStrings.UpperCase(S);
end;
但是,您需要依赖于编译器设置来进行内联,并且还需要在调用 AliasToUpperCase
的任何位置添加 AnsiStrings
单元,否则您将收到 H2443 内联函数未扩展,因为单元未在 USES 列表中指定
警告。
对于此函数签名,它可以工作,但对于其他返回类型,您可能会遭受缺少返回值优化和额外值复制的影响。
AliasToUpperCase
函数并查看双重CopyRecord
调用)。 - Stefan Glienke