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

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

"在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#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++中的 预编译头这一项中,选择不使用预编译头即可。但预编译有着提高项目编译速度这样的好处,尽量还是能使用就使用吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值