5

int &a德尔福怎么写?

例如,在 C++ 中是void ABC(int &a, int &b),但我不知道如何在 Delphi 中编写它。

4

4 回答 4

7

那是 C++ 中的引用参数。在 Delphi 中对应一个var 参数

procedure ABC(var a: Integer; var b: Integer);

文档说:

大多数参数要么是值参数(默认),要么是变量(var)参数。值参数通过值传递,而可变参数通过引用传递。

于 2013-01-24T13:55:12.103 回答
4
void ABC(int &a, int &b)

会成为

procedure ABC(var a: Integer; var b: Integer);

var关键字表示您希望通过引用而不是值来传递值。

于 2013-01-24T13:55:44.827 回答
1

还有procedure ABC(out a: Integer; out b: Integer); 虽然它不完全是 var-parameters,但它们也是按引用传递的,旨在将值传递出去。根据您移植的代码的语义,您可以var根据out具体情况进行选择。

于 2013-01-24T15:34:34.613 回答
1

正如其他人指出的那样,等效的 Delphi 声明是procedure ABC(var a, b: Integer);除非您的意图是声明 Delphi 代码可以调用的外部 C/C++ 实现的函数,在这种情况下,您必须考虑 C/C++ 函数的调用约定。没有指定调用约定的 Delphi 函数声明,如上所示,使用 Delphi 的调用约定(在 C++Builder 中register称为)。__fastcall您显示的 C/C++ 声明未指定调用约定,因此使用 C/C++ 编译器的默认调用约定,在大多数设置中为__cdecl,在这种情况下,等效的 Delphi 声明将变为:procedure ABC(var a, b: Integer); cdecl;

于 2013-01-24T21:28:02.323 回答