其实微软也会写谭浩强风的源代码
2015-01-30 22:37:22 +08:00
yksoft1
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);
这一句。
记得一个函数的多个参数里同时存在读取和写入一个变量的话是未定义行为吧
我几年前研究这个扫雷源码时就注意到了,开不开优化会导致结果的改变
11 条回复
s51431980
2015-01-30 23:38:02 +08:00
哪来的代码?
FrankFang128
2015-01-30 23:40:09 +08:00
扫雷又不用升级
sumhat
2015-01-30 23:42:13 +08:00
要看 Windows 的编译器实现和 DrawBorder 的实现。万一 DrawBorder 是个宏呢……
yksoft1
2015-01-30 23:49:36 +08:00
yksoft1
2015-01-30 23:50:50 +08:00
@
sumhat 而且肯定和编译器无关,那个源代码用MinGW和Cygwin的GCC都能编译成功
zdf
2015-01-31 00:01:36 +08:00
谭浩强一个不会编程的人何来的谭浩强风。
YouXia
2015-01-31 00:10:28 +08:00
谭浩强即使再不会编程,也比论坛上大部分人代码写的好,逃。。。)
skybr
2015-01-31 00:23:50 +08:00
@
YouXia 前几天看到吴军在开扒老谭搞政干出身, 口才好, 但是不会写代码. 求真相啊.
yksoft1
2015-01-31 00:43:00 +08:00
@
s51431980 以前就那个2004年泄露的包里有,现在貌似有人开了SVN不断更新那个泄露包
yksoft1
2015-01-31 03:21:32 +08:00
明天中午发送扫雷源码包,里面还有一点好玩的东西(NT4泄露源码里的16位Windows工具链部分文件)。
kawaiiushio
2015-01-31 06:23:24 +08:00
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/166906
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.