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,然后才能打开本文件。