int &a
德尔福怎么写?
例如,在 C++ 中是void ABC(int &a, int &b)
,但我不知道如何在 Delphi 中编写它。
那是 C++ 中的引用参数。在 Delphi 中对应一个var
参数。
procedure ABC(var a: Integer; var b: Integer);
文档说:
大多数参数要么是值参数(默认),要么是变量(var)参数。值参数通过值传递,而可变参数通过引用传递。
void ABC(int &a, int &b)
会成为
procedure ABC(var a: Integer; var b: Integer);
var
关键字表示您希望通过引用而不是值来传递值。
还有procedure ABC(out a: Integer; out b: Integer);
虽然它不完全是 var-parameters,但它们也是按引用传递的,旨在将值传递出去。根据您移植的代码的语义,您可以var
根据out
具体情况进行选择。
正如其他人指出的那样,等效的 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;