第一个坎 遇到的第一个大麻烦:
第三章 frame3 的两个宏
" DECLARE_DYNAMIC / IMPLEMENT_DYNAMIC“
#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_name; } /
百度上 费了两个小时终于解决问题
"/"的意思相当与换行 "/"以后还是定义的一部分
# 将一个“变量”名转化成字符串
在百度搜索的关键字“带参数的宏”“宏 ‘/’”
预处理谭浩强的书 讲的比较清楚的但是没讲