天天看点

stdafx.h 简介及作用

#include "stdafx.h"

stdafx.h 是什么 到底有什么用???

作为一个刚开始接触C++的小白,在很多代码的开头,总会用到#include "stdafx.h"头文件。并且这个文件用不好时经常会出错。于是在游览了很多博客后自己做了一个总结。

#pragma once

#include "targetver.h"

#define WIN32_LEAN_AND_MEAN             // 从 Windows 头中排除极少使用的资料
// Windows 头文件: 
#include <windows.h>

// C 运行时头文件
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
           

拿自己的一个Win32项目中的stdafx.h举例来看会发现其中包含了很多其他的头文件。这些头文件都有一个特点,就是经常使用且不经常更改。

百度百科查询的结果为:

stdafx.h在C++中起到的作用是头文件预编译,即把C++工程中使用的MFC头文件预先编译,以后该工程编译时,直接使用预编译的结果,以加快编译速度。C++编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h并不是标准C++头文件,与项目的源代码文件存放在同一个文件文件夹下,通过#include"stdafx.h"引用。stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。

所以可以简单的理解为stdafx.h是为了提高编译速度而存在的。

stdafx.h 预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。

编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

因此,所有的MFC实现文件第一条语句都是:#include “stdafx.h”。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory”这样让你百思不得其解的错误提示。

总结:

Stdafx.h”是一个预编译的标题,它包括标准系统的文件,包括文件和特定于项目的文件,这些文件经常被使用,但很少被修改。这减少了编译时间和不必要的处理。

MicrosoftVisualStudio中基本上使用预编译头stdafx.h来让编译器知道曾经编译过的文件,不需要从头编译它。

c++

继续阅读