通过看msdn知道CString定义在afx.h头文件中,而实现代码大多是在strcore.cpp中。但是我发现有几个函数比如init,getdata等的实现却在afx.inl中,以前好像没有听过inl文件啊,那位大侠能帮我讲讲?还有函数前面的_AFX_INLINE是什么意思呢?而且为什么有的构造函数CString()在两个文件里都有呢?还有代码中的AFXAPI AfxGetEmptyString()这个函数,那里有介绍呢?还望高人给指个方向。

解决方案 »

  1.   

    呵呵,看MFC的Source啊。
    最好是自己跟啊,要给你讲太复杂了。
      

  2.   

    当你定义了_AFX_ENABLE_INLINES宏的时候MFC编译器机会将很多函数做成inline的形式,我想是为了提高效率吧,这时候 _AFX_INLINE 就是 inline。 inl我想就是inline的缩写。至于AfxGetEmptyString()是MFC中用来取得空串(也就是你定义CString实例但是不指定初值的时候被初始化的值),因为CString并不是一个简单的char*或者TCHAR*,而是MFC对CStringData的封装,CString使用了COW技术,微软为了判断CString是否是空串,所以提供了这个函数。