我想知道为什么这条线存在于每个 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) 时才是正确的,并且在 the 之前不应有任何内容的原因#include "stdafx.h"
是:
Visual C++ 不会编译源文件中#include "stdafx.h" 之前的任何内容,除非未选中编译选项 /Yu'stdafx.h'(默认情况下);它假定源代码中直到并包括该行的所有代码都已编译
你应该阅读这个简短的描述stdafx.h
兼容的编译器(例如,Visual C++ 6.0 和更高版本)将预编译此文件以减少总体编译时间。Visual C++ 不会编译源文件中#include "stdafx.h" 之前的任何内容,除非未选中编译选项 /Yu'stdafx.h'(默认情况下);它假定源代码中直到并包括该行的所有代码都已编译。
它含蓄地说,要实现 PCH 的优势,您必须stdafx.h
尽快将其包含在包含层次结构中。
stdafx.h
文件包括在项目中与不同文件一起使用的公共头文件。包含它不是必须的,但是您必须管理项目中的所有标题,这将导致在不同文件中重复一些标题。