stdafx.h和stdafx.cpp的一些解释

来源:互联网 发布:波兰购物必买清单 知乎 编辑:程序博客网 时间:2024/06/15 13:18

有时候在编译一个项目的时候我们会遇到这样的错误:

"在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?"

那么这个stdafx.h头文件是干什么用的呢?

stdafx全称standard application fram extend,在MFC项目中,一般都会包含stdafx.h和stdafx.cpp文件,MFC项目要使用的头文件比如windows.h等都比较大,如果每个.cpp文件都要包含这些头文件的话,编译的时候速度就会很慢,所以微软采取了这样一个策略。在stdafx.h中默认包含了这些头文件,在编译之前会采用预编译的方法。也就是先把这些头文件所包含的信息编译成二进制文件储存起来,储存的文件后缀名为.pch。所以这个文件通常比较大,因为包含的信息较多。

那么如果只有stdafx.h头文件,编译器如何进行编译呢。所以,还会有一个stdafx.cpp文件,这样编译器在遇到这个文件时,就会先进行预编译处理。这样其他cpp文件只需要包含stdafx.h头文件就可以使用MFC的头文件了。

为什么每个.cpp文件都需要在最上面包含stdafx.h这个文件呢?

编译器在编译的时候,在遇到#include "stdafx.h" 这句之前都认为是预编译的,所以就不会再进行编译了。所以如果把一些include信息写在这句之前就可能产生一些找不到头文件中的生命的错误。

那开始的时候说的有时候会遇到的错误如何解决呢?

一是在项目中加上这两个文件,并且在所有.cpp文件最上边添加#include "stdafx.h" 

或者在项目配置属性C/C++中的 预编译头这一项中,选择不使用预编译头即可。但预编译有着提高项目编译速度这样的好处,尽量还是能使用就使用吧。

0 0