首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

预编译头 #include"预编译头文件"为啥要放在第一句

2012-09-06 
预编译头#include预编译头文件为何要放在第一句vs2010 预编译头jiese1990预编译头原理你有两个文件a.cpp

预编译头 #include"预编译头文件"为何要放在第一句
vs2010 预编译头jiese1990
预编译头原理你有两个文件a.cpp和b.cpp,都包含了同一个头文件c.h。那么正常的流程是:将c.h和a.cpp合并,编译成a.obj;将c.h和b.cpp合并,编译成b.obj;最后将a.obj和b.obj链接成可执行文件。
头文件c.h的内容实际上被解析了两遍。那干嘛不把c.h解析好了保存成临时文件,用时读入!预编译头就是这个原理:把 预编译头文件 事先编译成一种二进制的中间格式,供后续的编译过程使用。
如果预编译头所涉及的部分不发生改变的话,在随后的编译过程中此部分不重新进行编译。

每一个cpp文件里都必须#include”预编译头文件”在cpp里没有#include”预编译头文件”时:报错:fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?(StdAfx.h是我的预编译头文件)#include”预编译头文件”指令必须加载第一句所有在指令 #include "预编译头文件" 前的代码都是预编译的,它跳过 #include "预编译头文件"指令 及 此指令之前的指令,使用.pch编译这条指令之后的所有代码。(在vs里创建工程默认使用stdafx.h为预编译头文件)
也就是说在一个jiese.cpp文件里
#include ”jiese.h”
#inlcude “stdafx.h”
这两句相当于只有一句#inlcude “stdafx.h”, #include ”jiese.h”指令不会被编译

生成预编译头文件是很耗时间的。同时你得注意预编译头文件通常很大。
它们都是编译器之间不兼容的^_^,就是说你不能把VC生成的预编译头拿到GCC上去用。

vs2010预编译头设置方法,工程属性窗口预编译头     #include"预编译头文件"为啥要放在第一句

预编译头生成文件

预编译头     #include"预编译头文件"为啥要放在第一句

参考网址:

http://www.diybl.com/course/3_program/c++/cppjs/20081013/150579.html



热点排行