プロシージャが呼び出される前にパラメータが計算される順序は Delphi で定義されていますか?
IOW、もし私がこの醜いコードを持っているなら(レガシーアプリケーションでこのようなものを見つけました)...
function A(var err: integer): integer;
begin
err := 42;
Result := 17;
end;
Test(A(err), err);
... Test はパラメーター (17、42) を受け取ることが保証されていますか、それとも (17、未定義) でしょうか?
編集:
David の例は 32 ビット コンパイラと 64 ビット コンパイラで異なる結果を返しますが、Test(A(err), err)は 'err' のアドレスのみをレジスタに格納し、コンパイラが A(err) を呼び出す前か後にこれを行うかどうかは関係ありません。