V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yksoft1
V2EX  ›  分享发现

其实微软也会写谭浩强风的源代码

  •  
  •   yksoft1 · 2015-01-30 22:37:22 +08:00 · 5099 次点击
    这是一个创建于 3587 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2015-01-31 06:23:24 +08:00
    s51431980
        1
    s51431980  
       2015-01-30 23:38:02 +08:00
    哪来的代码?
    FrankFang128
        2
    FrankFang128  
       2015-01-30 23:40:09 +08:00
    扫雷又不用升级
    sumhat
        3
    sumhat  
       2015-01-30 23:42:13 +08:00
    要看 Windows 的编译器实现和 DrawBorder 的实现。万一 DrawBorder 是个宏呢……
    yksoft1
        4
    yksoft1  
    OP
       2015-01-30 23:49:36 +08:00
    @sumhat 它不是一个宏,是一个普通函数
    yksoft1
        5
    yksoft1  
    OP
       2015-01-30 23:50:50 +08:00
    @sumhat 而且肯定和编译器无关,那个源代码用MinGW和Cygwin的GCC都能编译成功
    zdf
        6
    zdf  
       2015-01-31 00:01:36 +08:00   ❤️ 1
    谭浩强一个不会编程的人何来的谭浩强风。
    YouXia
        7
    YouXia  
       2015-01-31 00:10:28 +08:00 via Android
    谭浩强即使再不会编程,也比论坛上大部分人代码写的好,逃。。。)
    skybr
        8
    skybr  
       2015-01-31 00:23:50 +08:00
    @YouXia 前几天看到吴军在开扒老谭搞政干出身, 口才好, 但是不会写代码. 求真相啊.
    yksoft1
        9
    yksoft1  
    OP
       2015-01-31 00:43:00 +08:00
    @s51431980 以前就那个2004年泄露的包里有,现在貌似有人开了SVN不断更新那个泄露包
    yksoft1
        10
    yksoft1  
    OP
       2015-01-31 03:21:32 +08:00
    明天中午发送扫雷源码包,里面还有一点好玩的东西(NT4泄露源码里的16位Windows工具链部分文件)。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1314 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:51 · PVG 01:51 · LAX 09:51 · JFK 12:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.