求助:宏扩展

MTring 2006-03-31 12:57:30
MFC 消息影射中的宏定义

#ifdef _AFXDLL
#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
const AFX_MSGMAP* PASCAL theClass::GetThisMessageMap() \
{ return &theClass::messageMap; } \
const AFX_MSGMAP* theClass::GetMessageMap() const \
{ return &theClass::messageMap; } \
AFX_COMDAT const AFX_MSGMAP theClass::messageMap = \
{ &baseClass::GetThisMessageMap, &theClass::_messageEntries[0] }; \
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
{ \

#else
#define BEGIN_MESSAGE_MAP(theClass, baseClass) \
const AFX_MSGMAP* theClass::GetMessageMap() const \
{ return &theClass::messageMap; } \
AFX_COMDAT const AFX_MSGMAP theClass::messageMap = \
{ &baseClass::messageMap, &theClass::_messageEntries[0] }; \
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \
{ \

#endif

#define END_MESSAGE_MAP() \
{0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
}; \

是怎么扩展的?还有“\"是干什么用的。在网上找到的资料都是简单的宏介绍,MIN、MAX,宏副作用之类,没找到这样的定义

麻烦了!
...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sankt 2006-03-31
  • 打赏
  • 举报
回复
是怎么扩展的?还有“\"是干什么用的。在网上找到的资料都是简单的宏介绍,MIN、MAX,宏副作用之类,没找到这样的定义

宏替换就是简单复制过程
//==========================
还有“\"是干什么用的
换行


firetoucher 2006-03-31
  • 打赏
  • 举报
回复
这是MFC的东西,用宏来避免了不必要的海量的缺省消息处理。
参见《深入浅出MFC》,上面对你说的这两个宏有很详细的介绍。

FT
--
Anything one man can imagine, other men can make real.
逸学堂 2006-03-31
  • 打赏
  • 举报
回复
是怎么扩展的?还有“\"是干什么用的。在网上找到的资料都是简单的宏介绍,MIN、MAX,宏副作用之类,没找到这样的定义
~~~~~~
\标示是连接符,比如这个,如果在这里不加\。
那么要把整个宏写在一行,加上\可以分行写。

那MIN据个例子

#define MIN(x,y) return ((x)>(y)?(y):(x))
上面的宏定义,已经可以避免很多语法错误了。
但是,即使这样依然存在问题。

int i =5;
int j =2;
int x = MIN(i,++j); // 我们预期x=3;但是运行后会发现x=4;
这就是宏的一个问题。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧