今天读mfc的CWinApp的代码,在其构造函数中,发现下面这段代码:ASSERT(AfxGetThread() == NULL);
pThreadState -> m_pCurrentWinThread = this;
ASSERT(AfxGetThread() == this);
后面还有类似的:
ASSERT(afxCurrentWinApp == NULL); 
pModuleState -> m_pCurrentWinApp = this;
ASSERT(AfxGetApp() == this);我想问一下,为什么赋值前后还要加上assert()呢,有什么特别的意义吗?
另外,初学MFC,是先学MFC内部的结构呢,还是先学MFC的应用啊?
还有就是,现在学习MFC过时吗?

解决方案 »

  1.   

    ASSERT断言 DEBUG版本里调试用
    当程序运行到ASSERT处如果里面的表达式不成立 则报错并且给错程序错误的文件及行号先学内部结构 如果感觉吃力 可和应用一起学 看多了自然会明白不过时
      

  2.   

    可是在赋值语句的前后添加断言是不是有些多余啊?
    另外,学习MFC,推荐看哪些书啊?
      

  3.   

    回LS
        侯俊杰的 《深入浅出MFC》第二版
      我现在也在学习中了
       也同问一下  
      学习MFC在现在到底过不过时
      

  4.   

    是先学MFC内部的结构呢,还是先学MFC的应用啊? 
    ------------
    当然是应用,你是耍大刀,不是造大刀
      

  5.   

    不多余啊
    如果ASSERT执行不成功的话那么后面的语句也会执行出现一些错误,程序异常终止等情况出现 你又不知道错在那里ASSERT是给你指出错误的地方方便调试而已推荐孙鑫的VC++深入详解吧~我也在学习
      

  6.   

    我也在看 VC++深入详解 这本书,那个疑问就是从这本书里看到的。
    关于那个问题,我想问的是那样的assert()用没有用啊,是为了预防什错误的?
    关于学习MFC,如果不知道内部的结构怎么学应用啊?