这个问题已经在这里有一个答案:
- stdafx.h中[复制]的目的 4个回答
- StdAfx +头文件-包含的次序在MFC应用 2个回答
我想知道为什么每个MFC应用程序(这迫使作出的stdafx.h包含在每个文件中的第一头)存在此行:
#ifndef __AFXWIN_H__
#error "include 'stdafx.h' before including this file for PCH"
#endif
是什么原因(一个或多个)这种行为背后?
这个问题已经在这里有一个答案:
我想知道为什么每个MFC应用程序(这迫使作出的stdafx.h包含在每个文件中的第一头)存在此行:
#ifndef __AFXWIN_H__
#error "include 'stdafx.h' before including this file for PCH"
#endif
是什么原因(一个或多个)这种行为背后?
它使用预编译头(PCH)时,和原因之前,不应该有任何的唯一真正#include "stdafx.h"
是:
Visual C ++会不会编译源文件中的#include“stdafx.h中”的事情之前 ,除非编译选项/Yu'stdafx.h未选中”(默认); 它假定源代码全部直到并包括该行已经编译
从http://en.wikipedia.org/wiki/Precompiled_header
你应该阅读这简短的描述stdafx.h
兼容的编译器(例如,视觉C ++ 6.0和更新的版本)将预编译该文件,以降低整体的编译时间。 Visual C ++会不会编译源文件中的#include“stdafx.h中”的事情之前,除非编译选项/Yu'stdafx.h未选中”(默认); 它假定源代码全部直到并包括该行已经编译。
它含蓄地说,为实现PCH的优势,你必须包括stdafx.h
尽快纳入中层级。
stdafx.h
的文件包括那些沿着不同的文件在项目中使用常见的头。 这不是必须的,包括,但那么你必须沿着管理项目中的所有头,这将导致重复一些头沿不同的文件。