<深入浅出MFC>中Fream3中这些代码看不懂是什么????

[复制链接]
查看11 | 回复4 | 2011-2-13 12:14:10 | 显示全部楼层 |阅读模式
#include "stdafx.h"
#define BOOL int
#define TRUE 1
#define FALSE 0
#define LPCTSTR LPSTR
typedef char* LPSTR;
#define UNIT int
#define PASCAL _stdcall
#include
using namespace std;
class CObjcet;
struct CRuntimeClass
{
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema;
CObject*(PASCAL *m_pfnCreateObject)();
CRuntimeClass * m_pNextClass;
static CRuntimeClass * m_pBaseClass;
CRuntimeClass *m_pNextClass;
};
struct AFX_CLASSINIT
{
AFX_CLASSINIT(CRuntimeClass*pNewClass);
};
#define RUNTIME_CLASS(class_name) \
(&class_name::class##class_name)
#define DECLARE_DYNAMIC(class_name)\
public:\
static CRuntimeClass class##class_name;\
virtual CRuntimeClass* GetRuntimeClass() const;
#define_IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,wSchema,pfnNew)\
static char _lpsz##class_name::[]=#class_name;\
CRuntimeClass class_name::class##class_name={\
_lpsz##class_name,sizeof(class_name),wSchema,pfnNew,\
RUNTIME_CLASS(base_class_name),NULL};\
static AFX_CLASSINIT _init_##class_name(&class_name::class##class_name);\
CRuntimeClass* class_name::GetRuntimeClass() const\
{ return &class_name::class##class_anme;}\
#define IMPLEMENT_DYNAMIC(class_name,base_class_name)\
_IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,0xFFFF,NULL)
怎么还有反斜线,是什么这么一堆

回复

使用道具 举报

千问 | 2011-2-13 12:14:10 | 显示全部楼层
☆《深入浅出MFC》MFC仿真——动态类型识别RTTI我们作为类库的设计者要在类构造起来的时候,记录必要的信息,以建立型录。型录中的类的信息,最好以链表方式连接起来。一般“类别型录”是一个结构,其中至少需要类名字,链表的Next指针,以及链表的First指针。First属于整体变量,一份就好,所以用static修饰。为了将每一个类都能拥有成员变量集合,并且最好有一定的命名规则,然后经某种手段将整个类库构造好之后,“类别型录”(就是各个CRuntimeClass对象)则能呈现为:☆什么是DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC 宏?作用就是完成RTTI的“类别型录”。为了将一个类对象塞到类之中,并定义一个可以捕捉
回复

使用道具 举报

千问 | 2011-2-13 12:14:10 | 显示全部楼层
妹子啊现如今想找个好男人不容易啊你可要好好把握哦。我也是朋友介绍的咨询师,在他的指引下我顺利的通过了老公那一关,我现在的生活很不错;哪个男人都希望是自己的女人的唯一!所以我也向你推荐:如果有需要,可以加咨询师扣扣 号,前四位数:陆四一六、后五位数:二零⑦八捌;他也会指导你。希望你能得到和我一样的幸福.祝你成功
回复

使用道具 举报

千问 | 2011-2-13 12:14:10 | 显示全部楼层
这些就是类型声明 和宏定义,反斜线意思是就是一行代码分成多行写,告诉编译器这一句没有结束,由于宏定义没有分号结束符,所以要一句写成多行就要加上反斜线,不然编译器是不知道 的
回复

使用道具 举报

千问 | 2011-2-13 12:14:10 | 显示全部楼层
反斜线代表下一行是这一行的继续,因为宏定义中间不能有回车和空格比如#define RUNTIME_CLASS(class_name) \ (&class_name::class##class_name)相当于#define RUNTIME_CLASS(class_name) (&class_name::class##class_name)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行