|
Prev: array variable subscript generate wrong code (2008) ?
Next: any smarter ways to design this tree structure
From: brof777 on 18 Apr 2008 01:13 here is the code: DWORD SomeFunction(DWORD Dw_0, DWORD Dw_1, DWORD Dw_2) { return Dw_0 + Dw_1 + Dw_2; } void main() { DWORD Dw = 0; DWORD pDw[3] = {1,2,3}; DWORD Dw_Sum = SomeFunction(pDw[Dw++], pDw[Dw++], pDw[Dw++]); } I expected VC++ 2008 generate code as SomeFunction(3,2,1) or SomeFunction(1,2,3), however, the real code is like SomeFunction(1,1,1) I debug the and watch assembly code, find the code was generated with push pDw[0] 3 times, then increase Dw by 3 times. Can anyone tell me why? |