说明:这篇日志我不知道怎么命名好,虽然内容很少,但是讲的关键字很多,如果你有幸打开这篇日志,不妨往下看看
背景:我们使用 VC++6.0 开发MFC应用程序,初学者一定会为那么多行的注释代码感到头痛,下面就说说这些有益无意义的注释
//{{AFX_MSG、//{{AFX_VIRTUAL、//{{AFX_MSG_MAP、//{{AFX_DATA_INIT 我们看到很多这样打头的代码,其中典型的一个,在你应用程序的 CApp 头文件中
// Implementation
//{{AFX_MSG(CHelloMFCApp)
afx_msg void OnAppAbout();
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
刚开始始终不知道注释干嘛的,后来看见中间的语句 afx_msg void OnAppAbout(); 其中的 afx_msg ,我查阅一些说明:
在afxwin.h中找到一些afx_msg的解释:
#ifndef afx_msg
#define afx_msg // intentional placeholder
#endif
intentional placeholder 故意的占位符,你可以翻译成有计划策略的占位符,总之就是一个没有实际意义的占位符,看定义就知道,没有起到什么作用,因为 #define 没有给他赋什么值。
这个对编译器来说,相当于什么都没有;
对于人来说,我们可以看到这样的符号;
对于类向导来说.这个符号才是有意义的.它是一个消息处理函数的前缀.类向导生成的消息函数,分发函数,事件响应函数都以这个为前缀.如果去掉了,向导将不能识别。
afx_msg目前只是一个占位符,今后微软可能会赋予它确实的意义,来自MFC AFXWIN.H文件。
于是对比//{{AFX_MSG、//{{AFX_VIRTUAL、//{{AFX_MSG_MAP、//{{AFX_DATA_INIT,得知这些有规律的注释是类向导自动生成的格式,用于识别具体的函数,以及他们的分类、位置,不能人为的随意更改,不然会导致类向导无法正确识别。
当然,如果你是纯手打代码,不适用IDE工作,那你删除这些代码倒也是不介意。前提是,你的层次已经到了那个程度。
转载于:https://www.cnblogs.com/herbertchina/p/4306817.html
微软的信息:
AFX_DATA_INIT
- 07/12/2006
- 2 minutes to read
Remarks
ClassWizard and AppWizard insert specially formatted comment delimiters in your source code files to mark the places in your files that ClassWizard can write to. AFX_DATA_INIT is used to mark the beginning and end of dialog data exchange (DDX) member variable initializations in a dialog class’s constructor:
Copy
//{{AFX_DATA_INIT(classname)
...
//}}AFX_DATA_INIT
For more information, see AFX_DATA_MAP and AFX_DATA.
翻译一下:
ClassWizard和AppWizard在源代码文件中插入特殊格式的注释定界符,以标记文件中ClassWizard可以写入的位置。AFX_DATA_INIT用于在对话框类的构造函数中标记对话框数据交换(DDX)成员变量初始化的开始和结束: