使用最新的Delphi版本(柏林/ 10.1/24),[Ref]属性真的有必要吗?
我问这个是因为在线文档说:
常量参数可以通过值或引用传递给函数,具体取决于所使用的特定编译器.要强制编译器通过引用传递常量参数,可以将[Ref]装饰器与const关键字一起使用.
它几乎与文档中描述的一样.你会使用[ref]
,如果你有一个理由要强制按引用传递参数.我能想到的一个例子是互操作.想象一下,您正在调用一个定义如下的API函数:
typedef struct {
int foo;
} INFO;
int DoStuff(const INFO *lpInfo);
Run Code Online (Sandbox Code Playgroud)
在Pascal中,您可能希望像这样导入它:
type
TInfo = record
foo: Integer;
end;
function DoStuff(const Info: TInfo): Integer; cdecl; external libname;
Run Code Online (Sandbox Code Playgroud)
但由于TInfo
规模较小,编译器可能会选择按值传递结构.因此,您可以使用[ref]
强制编译器将参数作为引用进行注释.
function DoStuff(const [ref] Info: TInfo): Integer; cdecl; external libname;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
503 次 |
最近记录: |