优酷视频解密:extern的用法,预编译头的作用和用法,谁来解答一下

来源:百度文库 编辑:中财网 时间:2024/04/30 01:10:18
stdafx.h   是   VC   自动生成的,用来做预编译头文件。
什么叫预编译头文件呢?一般来说,在   Windows   下编程会包含大量的   SDK   头文件,这些文件的代码行数多达数十万行,而通常头文件是不生成代码的,也就是说,它们不生成对应的   .obj   文件(在   unix   上是   .o   文件)。
而对于   .c   和   .cpp   文件来说,每次编译之后就生成一个   .obj   文件,因此,如果代码没有改动,下次   build   时这个文件就不用再编译了。
这样一来,.c   和   .cpp   文件的编译速度是加快了,可是头文件还不行,编译器每次都要扫描他们,由于它们行数巨大,极大的影响了编译速度。特别是:事实上头文件(主要指系统接口头文件)常常是改动最少的文件,它们一旦生成,可能就永远都不改了。一遍遍的扫描巨大的、从来不改动的文件,效率当然很低。
因此,各家编译器为了提高编译速度,都在头文件预编译上下了功夫,而微软的方案就是指定一个特定的头文件为预编译头文件,凡是在这个头文件中   #include   的头文件,都会被预编译。在自动生成的工程中,这个头文件就是   stdafx.h。与此相配的还有一个   stdafx.cpp,它通常只有一行代码,就是   #include   "stdafx.h "。这个文件在编译选项中被指定为第一个编译的,而且用户不应改动此文件,这样达到预编译头文件的目的。
别小看这个东西,你找一个带   GUI   的工程,编译几次,感受一下速度,再把   stdafx.h(或   stdafx.cpp)   里随便加个空格什么的,再来编译,编译的速度一定会很慢。当然,以后又快了。
所以,   stdafx.h   的正确使用方式是:把系统接口、标准库的头文件用它   #include   进去,除第一次编译稍慢,以后就会为你节省大量的编译时间。因为这些头文件都比较大,而且你基本上不太可能去改动他们。
需要注意的是,滥用   stdafx.h   会适得其反,如果你在   stdafx.h   中包含了一个自己的头文件,而且这个头文件经常改动的话,你就会得到……在编译时喝咖啡的时间。
最后,如果你不喜欢微软自作主张的话,你可以不使用预编译头文件,或者指定另一个文件为预编译头文件。好象是在   setting   对话框的   compiler   项目中,自己找找,很好找的。