int &a
Delphi でどのように記述しますか?
たとえば、C++ では ですがvoid ABC(int &a, int &b)
、Delphi での記述方法がわかりません。
これは C++ の参照パラメーターです。var
パラメータに対応する Delphi では。
procedure ABC(var a: Integer; var b: Integer);
ドキュメントには次のように記載されています。
ほとんどのパラメーターは、値パラメーター (デフォルト) または変数 (var) パラメーターのいずれかです。値パラメーターは値によって渡されますが、変数パラメーターは参照によって渡されます。
void ABC(int &a, int &b)
になるだろう
procedure ABC(var a: Integer; var b: Integer);
このvar
キーワードは、値ではなく参照によって値を渡すことを示します。
他の人が指摘したように、同等の Delphi 宣言はprocedure ABC(var a, b: Integer);
、 Delphi コードが呼び出すことができる外部の C/C++ 実装関数を宣言することを意図していない限り、C/C++ 関数の呼び出し規則を考慮に入れる必要がある場合を除きます。上記のように、呼び出し規約を指定しない Delphi 関数宣言は、Delphi のregister
呼び出し規約(__fastcall
C++Builder で知られている)を使用します。表示する C/C++ 宣言では呼び出し規約が指定されていないため、C/C++ コンパイラのデフォルトの呼び出し規約が使用されます。これは、ほとんどのセットアップでは です__cdecl
。この場合、同等の Delphi 宣言は次のようになります。procedure ABC(var a, b: Integer); cdecl;
またprocedure ABC(out a: Integer; out b: Integer);
、厳密には var-parameters ではありませんが、それらは参照によって渡され、値を渡すことを意図しています。移植するコードのセマンティクスに応じて、ケースバイケースでvar
またはを選択できます。out