MFC中头文件和预定义宏

本文介绍了在MFC编程中如何防止头文件重定义,使用`#pragma once`避免头文件重复包含,确保连接MFC核心组件,连接资源文件,以及在调试模式下添加诊断服务功能的方法。通过理解这些预定义宏和头文件的用法,可以更好地管理和优化MFC项目中的源代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      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页面中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值