Tekkaman

导航

 

2011年4月20日

摘要: 上文分析了ATL、MFC CString的设计和实现,我们不禁会疑问,为什么ATL和MFC的CString头文件要搅在一起?上文的分析有些杂乱,我们通过一张图来更加清晰的观察,如下: 上图中,用圈圈住的头文件表示ATL头文件,没被圈的代表MFC头文件。另外,在头文件旁边字符,表示各个头文件中实现的类。 现在让我们仔细观看,整个貌似平衡的设计中,其实有着很多的不平衡。我想问: 1、为什么MFC头文件cstringt.h要包含atl头文件atlsimpstr.h?为什么ATL头文件要包含cstringt.h?ATL搞ATL的,MFC搞MFC的,各不相干,起不更好? 2、ChTraitOS 放在 a 阅读全文
posted @ 2011-04-20 19:07 Tekkaman 阅读(11066) 评论(11) 推荐(9)
 
摘要: 话说CString这个东西困扰了很多年轻人,因为它会引起诡异的编译错误,今天跟着我一起来深入ATL、WTL头文件,来把这个东西搞个清清楚楚。【涉及到头文件】 ATL: atlstr.h, atlsimpstr.h MFC : cstringt.h、afxstr.h WTL : atlmisc.h ATL和MFC有关剪不断理还乱的关系,为了更容易分析,我们先要理清这四个头文件间的关系。观察相互间观察顺序,可以得出: atlstr.h引用cstringt.h,cstring引用atlsimpstr.h,afxstr.h引用cstringt.h,由此可得出下图:【atlsimpstr.h 都干了什么 阅读全文
posted @ 2011-04-20 17:35 Tekkaman 阅读(7853) 评论(2) 推荐(3)
 
摘要: inl 文件是内联函数的源文件。内联函数通常在c++头文件中实现,但有的时候内联函数较多或者出于一些别的考虑(使头文件看起来更简洁等),往往会将这部分具体定义的代码添加到INL文件中,然后在该头文件的末尾将其用#include引入。由此也可以看到inl文件的例外一个用法的影子——模板函数、模板类的定义代码的存放。对于比较大的工程来说,出于管理方面的考虑,模板函数、模板类的声明部分一般存放在一个或少数几个文件中,而将其定义部分存放在inl文件中,然后在相应的头文件中包含进来。 Google代码规范中也谈到了inl文件,需要阅读的读者可以从这里阅读Google代码规范,http://google. 阅读全文
posted @ 2011-04-20 10:53 Tekkaman 阅读(3480) 评论(0) 推荐(0)