#的在宏定义中的作用
博客专区 > seanking 的博客 > 博客详情
#的在宏定义中的作用
seanking 发表于2年前
#的在宏定义中的作用
  • 发表于 2年前
  • 阅读 7
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 宏定义中#的作用

在C/C++中#可以将宏的变量名称转换成字符串

例如MFC源码中

struct AFX_MAP_MESSAGE
{
	UINT    nMsg;
	LPCSTR  lpszMsg;
};

#define DEFINE_MESSAGE(wm)  { wm, #wm }

static const AFX_MAP_MESSAGE allMessages[] =
{
	DEFINE_MESSAGE(WM_CREATE),
	DEFINE_MESSAGE(WM_DESTROY),
	DEFINE_MESSAGE(WM_MOVE),
//此处省略
	DEFINE_MESSAGE(WM_DEVICECHANGE),
	{ 0, NULL, }    // end of message list
};

#undef DEFINE_MESSAGE

通过这种方法可以方便的形成枚举,常数,宏名的字符串输出列表。通过下面的代码可以将值转变成成字符串

UINT nMsg = WM_CREATE; 
LPCSTR lpszMsgName = NULL;
const AFX_MAP_MESSAGE* pMapMsg = allMessages;
for (/*null*/; pMapMsg->lpszMsg != NULL; pMapMsg++)
{
	if (pMapMsg->nMsg == nMsg)
	{
		lpszMsgName = pMapMsg->lpszMsg;
		break;
	}
}



标签: #
共有 人打赏支持
粉丝 3
博文 12
码字总数 5369
评论 (0)
×
seanking
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: