MFC中头文件和预定义宏

来源:互联网 发布:使命召唤10 知乎 编辑:程序博客网 时间:2024/06/06 14:11

      1.防止头文件中定义的类、全局变量和宏的定义出现重定义
  
  #if !defined(ASDFLAKSDJFOAIWJEF) //#ifndef ()
  #define ASDFLAKSDJFOAIWJEF
  ...
  #endif//!defined(ASDFLAKSDJFOAIWJEF)
  
  2.避免#include时头文件被重复打开
  
  #if MSCVER>1000
  # pragma once
  #endif //MSCVER>1000
  
  (vc++1.0是Microsoft c/c++7.0的后继版本,MSCVER = 1000对应于VC++4.0版本。)
  对于VC++4.0及以后版本,指定该文件在一次建立中只被编译一次
  
  3.确保连接MFC核心和基本组成部分
  #ifndef AFXWINH
   #error include ’stdafx.h’before including this file for PCH
  #endif
  是否定义AFXWINH宏表示是否包括了头文件afxwin.h,该头文件提供与“MFC核心和基本组成部分”连接接口。
  MFC AppWizard总是构造atdafx.h来包含afxwin.h,因此,对MFC AppWizard生成的项目来说,是否包括afxwin.h头文件的关键在于是否

包括了头文件stdafx.h。
  在生成预编译头文件PCH的时候,首先要打开afxwin.h,然后才能打开本文件。
  
  4.连接资源
  #include “resource.h” //main symbols
  头文件resource.h是项目中Windows资源代码与可执行代码的唯一接口文件。
  
  5.为调试版本添加诊断服务功能
  #ifdef DEBUG
  #define new DEBUGNEW
  #undef THISFILE
  static char THISFILE[] = FILE;
  #endif
  首先,用“#ifdef DEBUG”判断生成执行代码的模式,在调试模式(定义了DEBUG符号时)下,使用“DEBUGNEW”宏代替“new”操作。
  “#define new DEBUGNEW”用于帮助发现内存泄露。即用DEBUGNEW来代替new。
  DEBUGNEW纪录它所分配的每个对象的文件名和行号。当程序员使用CMemoryState::DumpAllObjectsSince成员函数时,每个用DEBUGNEW

分配的对象将与发生分配的文件名和行号一起显示在Output窗口的debug页面中。

0 0