此前,I ,asked a question,并获得公平答复。 但我所困在宏观定义以下。
以下定义产生了信息地图功能,就像在中西太平洋渔委会信息地图上那样。 但以下法典没有编纂。
除MSG_HANDLERthis->meth(msg);
dont知悉原因外,从this->开始的全文说明都存在问题。
因此,如何纠正这一问题?
我2008年使用VS。
#define MSG_UNPACK(var, id, msg) x##id *var = (x##id *)(msg);
#define BEGIN_MSG_MAP
protected:
virtual void dispatchToMsgMap(xMessage *msg)
{
if (msg->msg.message == WM_NULL)
{
return;
}
#define MSG_HANDLER(meth, wm_msg)
else if (msg->msg.message == wm_msg)
{
this->meth(msg);
return;
}
#define END_MSG_MAP(base)
else if (msg->msg.message == WM_COMMAND)
{
this->dispatchToCmdMap(msg);
return;
}
else if (msg->msg.message == WM_NOTIFY)
{
this->dispatchToNotifyMap(msg);
return;
}
base::dispatchToMsgMap(msg);
};
#define BEGIN_CMD_MAP
virtual void dispatchToCmdMap(xMessage *msg)
{
MSG_UNPACK(Cmd, WM_COMMAND, msg);
if (Cmd->ItemID == 0)
{
/* not allowed */
}
#define CMD_HANDLER(meth, cmd_id)
else if (Cmd->ItemID == cmd_id)
{
this->meth(Cmd->ItemID);
}
#define END_CMD_MAP(base)
else
{
base::dispatchToCmdMap(msg);
}
};
这里,例如:this->dissignToCmdMap(msg);
是第41条。
1>d:develcodingvs2008 est2 est2messagemapper.h(41) : error C2059: syntax error : this 1>d:develcodingvs2008 est2 est2messagemapper.h(41) : error C2017: illegal escape sequence 1>d:develcodingvs2008 est2 est2messagemapper.h(42) : error C2059: syntax error : return 1>d:develcodingvs2008 est2 est2messagemapper.h(42) : error C2017: illegal escape sequence 1>d:develcodingvs2008 est2 est2messagemapper.h(43) : error C2059: syntax error : } 1>d:develcodingvs2008 est2 est2messagemapper.h(43) : error C2143: syntax error : missing ; before } 1>d:develcodingvs2008 est2 est2messagemapper.h(43) : error C2059: syntax error : }