Is the order in which parameters are calculated before a procedure is called defined in Delphi?
IOW, if I have this ugly code (found something like this in a legacy application) ...
function A(var err: integer): integer;
begin
err := 42;
Result := 17;
end;
Test(A(err), err);
... is Test guaranteed to receive parameters (17, 42) or could it also be (17, undefined)?
Edit:
Although David's example returns different result with 32-bit and 64-bit compiler, this (luckily) doesn't affect my legacy code because Test(A(err), err) only stores an address of 'err' in the register and it doesn't matter whether the compiler does this before calling A(err) or after.