首页
社区
课程
招聘
[求助]这样写C++代码是什么意思呢?
发表于: 2020-6-5 21:43 4517

[求助]这样写C++代码是什么意思呢?

2020-6-5 21:43
4517

最近看到一些古怪的写法,不是很明白coder的意图是什么?

  • 代码采用_DEUUG方式展开的
  • BOOL bHandled = 1; (hWnd); (uMsg); (wParam); (lParam); (lResult);这样变量加分号的写法有什么用?我尝试单步走这种行都是直接跳过,和没有一样.
  • 还有最后边那个地方几个与在一起的表达式. 改写下就是 0||func1()||func2()||(func3(),0) 按照逻辑运算,第一个0和最后的0是不是也是多余的?再说了,func3本来就是最后一个函数了,本来就应该算是执行完成了,干嘛还要逗号运算一个0呢?

    BOOL ProcessWindowMessage(
      HWND hWnd, UINT uMsg,
      WPARAM wParam, LPARAM lParam, 
      LRESULT& lResult, DWORD dwMsgMapID = 0)
    {
      //变量加括号意义不明
      BOOL bHandled = 1; (hWnd); (uMsg); (wParam); (lParam); (lResult); (bHandled);
      switch (dwMsgMapID) {
      case 0:;
          if (uMsg == 0x0010)
          {
              SetMsgHandled(1);
              OnClose();
              lResult = 0;
              if (IsMsgHandled())
                  return 1;
          };
          break;
      default:
          ATL::CTraceFileAndLineInfo("MainWnd.h", 14)
              (static_cast<int>(ATL::atlTraceWindowing),
                  0, "Invalid message map ID (%i)\n", 
                  dwMsgMapID); 
    
          //意义不明
          (void)((!!((0))) || 
              (1 != _CrtDbgReportW(2, L"MainWnd.h", 14, 0, L"%ls", L"0"))      ||
              (__debugbreak(), 0));
          break;
      }
      return 0;
    };
    

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 183
活跃值: (1218)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
把带宏的源代码发出来看看。
2020-6-6 11:42
0
雪    币: 2325
活跃值: (4903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
(hWnd); (uMsg); (wParam); (lParam); (lResult); (bHandled); 消除警告, 

  (void)((!!((0))) ||
          (1 != _CrtDbgReportW(2, L"MainWnd.h", 14, 0, L"%ls", L"0"))      ||
          (__debugbreak(), 0));
调试的时候才会用到下面这些代码,函数具体啥作用不清楚
2020-6-6 12:01
0
雪    币: 188
活跃值: (341)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
yy大雄 把带宏的源代码发出来看看。
标准的WTL消息映射宏
BEGIN_MSG_MAP(CMainWnd)
    MSG_WM_CLOSE(OnClose)
END_MSG_MAP()
2020-6-6 23:54
0
雪    币: 188
活跃值: (341)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
值得怀疑 (hWnd); (uMsg); (wParam); (lParam); (lResult); (bHandled); 消除警告, (void)((!!((0))) || ...
1.消除什么警告?能举例一个简单的函数重现吗?
2.这里是看的这种写法,按照逻辑运算的要求,`(void)((!!((0)))` 这个东西只可能是假,.必然运行下一个函数的多余设定,接下来_CrtDbgReportW返回值不等于1, 那么继续执行__debugbreak(), 到此所有的语句都运行完了,随后逗号运算后的0就是多余的了.
2020-6-7 00:08
0
雪    币: 2325
活跃值: (4903)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
yukihotaru 1.消除什么警告?能举例一个简单的函数重现吗? 2.这里是看的这种写法,按照逻辑运算的要求,`(void)((!!((0)))` 这个东西只可能是假,.必然运行下一个函数的多余设定,接下来_CrtD ...
没用到的参数会有警告啊··  (void)((!!((0))) 不是宏展开后的吗? 调试和发布都是这个?
2020-6-7 11:51
0
游客
登录 | 注册 方可回帖
返回
//