Why stdfax.h should be the first include on MFC applications?(为什么 stdfax.h 应该是 MFC 应用程序的第一个包含?)
问题描述
我想知道为什么每个 MFC 应用程序都存在这条线(这迫使 stdafx.h 成为每个文件中包含的第一个标头):
I want to know why this line exists on every MFC app (which force to make stdafx.h the first header included in every file) :
#ifndef __AFXWIN_H__
#error "include 'stdafx.h' before including this file for PCH"
#endif
这种行为背后的原因是什么?
What are the reason(s) behind this behavior ?
推荐答案
只有在使用Precompiled Headers (PCH)时才会这样,以及为什么在#include "stdafx.h"之前不应该有任何东西的原因
是:
It's only true when using Precompiled Headers (PCH), and the reason why there shouldn't be anything before the #include "stdafx.h"
is :
Visual C++ 不会在 #include "stdafx.h" 之前编译任何内容源文件,除非编译选项/Yu'stdafx.h' 未选中(默认情况下);它假定源代码中的所有代码,包括该行已经编译
Visual C++ will not compile anything before the #include "stdafx.h" in the source file, unless the compile option /Yu'stdafx.h' is unchecked (by default); it assumes all code in the source up to and including that line is already compiled
来自 http://en.wikipedia.org/wiki/Precompiled_header
这篇关于为什么 stdfax.h 应该是 MFC 应用程序的第一个包含?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么 stdfax.h 应该是 MFC 应用程序的第一个包含?
基础教程推荐
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01