#pragma once #ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif #include "targetver.h" #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 // 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息 #define _AFX_ALL_WARNINGS #include <afxwin.h> // MFC 核心组件和标准组件 #include <afxext.h> // MFC 扩展 #include <afxdisp.h> // MFC 自动化类 #ifndef _AFX_NO_OLE_SUPPORT #include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持 #endif #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC 对 Windows 公共控件的支持 #endif // _AFX_NO_AFXCMN_SUPPORT #include <afxcontrolbars.h> // MFC 支持功能区和控制条 #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif
时间: 2024-04-21 19:28:44 浏览: 169
这段代码是一个头文件,包含了 MFC(Microsoft Foundation Classes)框架的核心组件和标准组件,以及一些 MFC 对 Windows 公共控件和 Internet Explorer 4 公共控件的支持。其中,通过宏定义来排除 Windows 头文件中极少使用的资料,关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息。同时,为了支持不同系统架构和字符集,还通过条件编译来设置了不同的链接器选项。最后,通过包含afxcontrolbars.h头文件,来支持 MFC 的功能区和控制条。
相关问题
#ifndef PCH_H #define PCH_H #pragma once // TODO: 添加要在此处预编译的标头 #endif //PCH_H什么意思
这段代码是 C++ 中预编译头文件的标准写法。预编译头文件可以加速编译过程,避免每次都重新编译大量的头文件。代码中:
- `#ifndef PCH_H` 意思是如果没有定义 `PCH_H` 宏,则执行下面的代码,否则跳过。
- `#define PCH_H` 定义 `PCH_H` 宏,防止重复定义。
- `#pragma once` 是一种预编译指令,告诉编译器只包含一次该头文件。
- `TODO: 添加要在此处预编译的标头` 是一个注释,提示开发者在这里添加需要预编译的头文件。
- `#endif` 结束 `#ifndef` 的代码块。
- `//PCH_H` 是一个注释,用于标记 `#endif` 对应的 `#ifndef` 是干什么用的。
#pragma once和#ifndef
#pragma once 和 #ifndef 都是C/C++中用于防止头文件重复包含的预处理指令。
#pragma once 是非标准的指令,它可以确保头文件只被编译一次,如果在同一文件中多次包含该头文件,也只会编译一次。使用#pragma once 可以减少编译时间,提高编译效率。
#ifndef 则是标准的预处理指令,其与 #define、#endif 配合使用,可以防止头文件被重复包含。使用#ifndef 的方式是在头文件中先定义一个预处理变量,如 #ifndef HEADER_FILE_H ,然后在文件末尾加上 #endif,这样如果该头文件被重复包含,预处理变量已经被定义,不会再次包含头文件。
两者的作用类似,都是用于防止头文件的重复包含,但是使用#pragma once 可以更简洁高效。
阅读全文