在CRunTimeClass中,声明如下
struct CRuntimeClass
{
// Attributes
LPCSTR m_lpszClassName; //类名,一般是指包含CRuntimeClass对象的类的名称
int m_nObjectSize; //包含CRuntimeClass对象的类sizeof的大小,不包括它分配的内存
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class 指向一个建立实例的构造函数#ifdef _AFXDLL
CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
#else
CRuntimeClass* m_pBaseClass;
#endif
 
问题如下:
CObject* (PASCAL* m_pfnCreateObject)(); 看它的形式是一个函数指针,但PASCAL*这表示什么意思(PASCAL* m_pfnCreateObject)这一段又是表示什么意思呢,对各位高手说,可能很简单,但对于我这种新手说,它阻止我前进的步伐,请各位大侠帮帮忙

解决方案 »

  1.   

    PASCAL是一个宏,把光标放上去,F12会让你找到答案,用来表示参数压栈规则的
      

  2.   

    调用协议 等价于WINAPI(即__stdcall)
      

  3.   

    CObject* (PASCAL* m_pfnCreateObject)();
    m_pfnCreateObject是一个函数指针,此函数的调用类型是PASCAL(__stdcall)CreateObject()会调用
    pObject = (*m_pfnCreateObject)();
      

  4.   

    PASCAL,WINAPI,_stdcall现在都是一个意思了——即函数调用习惯,也就是楼上说的参数压贱规则.