在 Delphi 中定义了调用过程之前计算参数的顺序吗?
IOW,如果我有这个丑陋的代码(在遗留应用程序中找到类似的东西)......
function A(var err: integer): integer;
begin
err := 42;
Result := 17;
end;
Test(A(err), err);
... Test 是否保证接收参数 (17, 42) 或者它也可以是 (17, undefined)?
编辑:
尽管 David 的示例使用 32 位和 64 位编译器返回了不同的结果,但这(幸运的是)不会影响我的旧代码,因为 Test(A(err), err) 只在寄存器中存储了一个 'err'的地址并且它编译器是在调用 A(err) 之前还是之后执行此操作并不重要。