为什么 stdfax.h 应该是 MFC 应用程序的第一个包含?

2022-01-12 00:00:00 visual-studio c++ 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

相关文章