VOID DrawBackground(HDC hDC)
{
INT x, y;
DrawBorder(hDC, 0, 0, x = dxWindow-1, y = dyWindow-1, 3, 1);
DrawBorder(hDC, dxGridOff-3, dyGridOff-3, x -= (dxRightSpace -3), y - (dyBottomSpace-3), 3, 0);
DrawBorder(hDC, dxGridOff-3, dyTopSpace-3, x, dyTopLed+dyLed+(dyBottomSpace-6), 2, 0);
DrawBorder(hDC, dxLeftBomb-1, dyTopLed-1, dxLeftBomb+dxLed*3, y=dyTopLed+dyLed, 1, 0);
DrawBorder(hDC, x =dxWindow-(dxRightTime+3*dxLed+dxpBorder+1), dyTopLed-1, x+(dxLed*3+1), y, 1, 0);
DrawBorder(hDC, x = ((dxWindow-dxButton)>>1)-1, dyTopLed-1, x+dxButton+1, dyTopLed+dyButton, 1, 2);
}
这一段来自老版扫雷的源代码,问题在
DrawBorder(hDC, x =dxWindow-(dxRightTime+3*dxLed+dxpBorder+1), dyTopLed-1, x+(dxLed*3+1), y, 1, 0);
这一句。
记得一个函数的多个参数里同时存在读取和写入一个变量的话是未定义行为吧
我几年前研究这个扫雷源码时就注意到了,开不开优化会导致结果的改变
{
INT x, y;
DrawBorder(hDC, 0, 0, x = dxWindow-1, y = dyWindow-1, 3, 1);
DrawBorder(hDC, dxGridOff-3, dyGridOff-3, x -= (dxRightSpace -3), y - (dyBottomSpace-3), 3, 0);
DrawBorder(hDC, dxGridOff-3, dyTopSpace-3, x, dyTopLed+dyLed+(dyBottomSpace-6), 2, 0);
DrawBorder(hDC, dxLeftBomb-1, dyTopLed-1, dxLeftBomb+dxLed*3, y=dyTopLed+dyLed, 1, 0);
DrawBorder(hDC, x =dxWindow-(dxRightTime+3*dxLed+dxpBorder+1), dyTopLed-1, x+(dxLed*3+1), y, 1, 0);
DrawBorder(hDC, x = ((dxWindow-dxButton)>>1)-1, dyTopLed-1, x+dxButton+1, dyTopLed+dyButton, 1, 2);
}
这一段来自老版扫雷的源代码,问题在
DrawBorder(hDC, x =dxWindow-(dxRightTime+3*dxLed+dxpBorder+1), dyTopLed-1, x+(dxLed*3+1), y, 1, 0);
这一句。
记得一个函数的多个参数里同时存在读取和写入一个变量的话是未定义行为吧
我几年前研究这个扫雷源码时就注意到了,开不开优化会导致结果的改变