现在的位置: 首页 > 综合 > 正文

VC创建新文件时自动添加代码含义

2013年02月14日 ⁄ 综合 ⁄ 共 1158字 ⁄ 字号 评论关闭

在每个头文件的开头有这些东西:   
  #if   !defined(AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_)  
  #define   AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_  
   
  #if   _MSC_VER   >   1000  
  #pragma   once  
  #endif   //   _MSC_VER   >   1000  
  #ifdef   _DEBUG  
  #define   new   DEBUG_NEW  
  #undef   THIS_FILE  
  static   char   THIS_FILE[]   =   __FILE__;  
  #endif  

 

意思如下:

 

 

 

1、  
  #if   !defined(AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_)  
  #define   AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_  
  //   文件内容  
  #endif  
   
  只是将符号AFX_MAINDLG_H__7FFD2FC7_8C06_11D6_B7CA_0050BA40CCBD__INCLUDED_与该头文件捆绑起来而已。如果此次编译包含过此头文件,该符号肯定定义过了,文件内容就不被编译,如果没有,就编译该文件内容。  
  2、  
  #pragma   once  
  相同,也是使该文件在一次编译过程中只编译一次。参考MSDN"#pragma"  
  (#if   _MSC_VER   >   1000...#endif   是判断当前VC版本是否支持)  
  3、  
  #ifdef   _DEBUG  
  #define   new   DEBUG_NEW  
  是MFC提供的调试用new算符,提供内存泄漏监测等等。参看:  
  void*   AFX_CDECL   operator   new(size_t   nSize,   LPCSTR   lpszFileName,   int   nLine);  
  #define   DEBUG_NEW   new(THIS_FILE,   __LINE__)  
  4、  
  #undef   THIS_FILE  
  static   char   THIS_FILE[]   =   __FILE__;  
  标准C++中,__FILE__,__LINE__是两个预定义宏,分别表示当前源文件路径名和行号,比如执行printf("file=%s,line=%d",__FILE__,__LINE__);试试看。  
  这两句就是定义了一个static   char   数组THIS_FILE[],并把初值赋为当前源文件路径名而已。

抱歉!评论已关闭.