本文主要是介绍预编译头stdafx.h,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
所谓的预编译头,就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的,不是.obj),这个文件就称为预编译头。文件这些预先编译好的代码可以是任何的C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。注意生成预编译头文件是很耗时间的。同时你得注意预编译头文件通常很大,通常有6-7M大。注意及时清理那些没有用的预编译头文件。
也许你会问:现在的编译器都有Time stamp的功能,编译器在编译整个工程的时候,它只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过的文件。那么为什么还要预编译头文件呢?答案是,我们知道编译器是以文件为单位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有头文件中的东西(.eg Macro, Preprocessor )都要重新处理一遍。VC的预编译头文件保存的正是这部分信息。以避免每次都要重新处理这些头文件。
但是如果预编头如果发生了变化就需要重新编译。这其实也是大家可能很疑惑的问题:为什么每次只要改动一下stdAfx.h 或 stdAfx.cpp 编译时就会花很长时间。所以对于预编译的头最好少作改动,或是不作改动。
以上是针对VC上而言的,一般预编译头文件是“Stdafx.h”。在LINUX下,也可以使用预编译头:
obj/i386/debug.obj: debug.c debug.h
$(CC) –Yc”precomp.h” -Fo$@ debug.c
obj/i386/OperateReg.obj: OperateReg.c OperateReg.h
$(CC) –Yu”precomp.h” -Fo$@ OperateReg.c
obj/i386/WaterMark.obj: WaterMark.c WaterMark.h
$(CC) –Yu”precomp.h” -Fo$@ WaterMark.c
其中precomp.h为想预编译的头文件。
这篇关于预编译头stdafx.h的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!