大神请进,关于C++MFC里的一些语法问题
本人不算新手,只是初步掌握的阶段,一些机制、函数作用等都明白了,可是很多语法还不知道是什么意思,跟C++的标准语法相差太大了……能否麻烦大神告诉一下以下这些都是什么意思:...
本人不算新手,只是初步掌握的阶段,一些机制、函数作用等都明白了,可是很多语法还不知道是什么意思,跟C++的标准语法相差太大了……能否麻烦大神告诉一下以下这些都是什么意思:
【BEGIN_MESSAGE_MAP(CMFCAppDlg,CDialog)】
【//{{AFX_MSG_MAP(CMFCAppDlg)】
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
【//}}AFX_MSG_MAP】
END_MESSAGE_MAP
以上,为什么宏定义也可以有参数?函数可以定义为宏我知道,可是这个参数并没有数据类型(或对象名?),正常来说不应该是CMFCAppDlg后面跟着对象名,比如CMFCAppDlg theApp这样的吗?
还有,为什么第二行的AFX_MSG_MAP(CMFCAppDlg)要注释起来?那不是就不起作用了吗?
还有另外几个,也想问下是什么意思:
const AFX_MSGMAP* CMFCAppDlg :: GetMessageMap() const \(大神们请注意,这里末尾的斜杠“\”不是我自己打的,是原本代码里就有的)
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \{}
这两句又是什么意思啊?大神们麻烦告诉我一下这个语法是什么意思就行,代码不用解释,我就是不知道他们为什么那样写,有什么规定吗? 展开
【BEGIN_MESSAGE_MAP(CMFCAppDlg,CDialog)】
【//{{AFX_MSG_MAP(CMFCAppDlg)】
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
【//}}AFX_MSG_MAP】
END_MESSAGE_MAP
以上,为什么宏定义也可以有参数?函数可以定义为宏我知道,可是这个参数并没有数据类型(或对象名?),正常来说不应该是CMFCAppDlg后面跟着对象名,比如CMFCAppDlg theApp这样的吗?
还有,为什么第二行的AFX_MSG_MAP(CMFCAppDlg)要注释起来?那不是就不起作用了吗?
还有另外几个,也想问下是什么意思:
const AFX_MSGMAP* CMFCAppDlg :: GetMessageMap() const \(大神们请注意,这里末尾的斜杠“\”不是我自己打的,是原本代码里就有的)
AFX_COMDAT const AFX_MSGMAP_ENTRY theClass::_messageEntries[] = \{}
这两句又是什么意思啊?大神们麻烦告诉我一下这个语法是什么意思就行,代码不用解释,我就是不知道他们为什么那样写,有什么规定吗? 展开
1个回答
展开全部
很简单的问题,都是C基本常识
一、宏定义可以定义成函数的样子,如:
#define fun(x) (x)*(x)
void main()
{
int a=2;
int b=fun(x) ; //这里编译时会变成 b= (2)*(2)
printf("b=%d\n",b );
}
二、反斜杠在末尾表示:未完待续。。。。 也就是说这一行与下一行是连着的(是同一行),只是为了书写好看,分成了两行!
一、宏定义可以定义成函数的样子,如:
#define fun(x) (x)*(x)
void main()
{
int a=2;
int b=fun(x) ; //这里编译时会变成 b= (2)*(2)
printf("b=%d\n",b );
}
二、反斜杠在末尾表示:未完待续。。。。 也就是说这一行与下一行是连着的(是同一行),只是为了书写好看,分成了两行!
追问
宏定义函数不用标明参数的数据类型吗?比如你那个fun(x)不用谢int?还有
const AFX_MSGMAP* CMFCAppDlg :: GetMessageMap() const
两个const在句头和句尾是什么意思啊?
追答
这只是样子象函数,实际并不是函数,所以不需要声明任何东西
简单来说:
前面的const表明返回值类型是常量指针
后面的const表明函数中不会修改类成员 , 增加程序的可读性和可靠性 这只能在类成员函数定义中使用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询