优酷视频解密: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 项目中,自己找找,很好找的。
什么叫预编译头文件呢?一般来说,在 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 项目中,自己找找,很好找的。
c++ vc++ 中的 extern 是什么意思,具体的用法
电容的作用和用法
料酒的用法和作用?
眼线液的作用和用法是什么?
MSN的用法和作用是什么
小铅笔头的用法
JAVA的作用?以及用法?
天麻的作用与用法?
or的用法和any的用法
运行 cmd和q的作用和用法是什么 啊????????
运行 cmd和q的作用和用法是什么 啊????????
析构函数和虚函数的用法和作用
奥迪车上的CAT的作用和用法?
Trimble GPS的基准站的作用和用法是什么?
修辞在文言文里的用法和作用
请问备份软件Ghost的作用和用法
浴盐的用法和作用?谢谢大家!
请教VB中Split函数的作用和用法
纯正茶花籽油的用法和作用。
谁能告诉我:维生素E的具体用法和作用?
求助:基础油和精油的区别、作用及用法?
关于须后水的作用和用法,请大家详细解释一下
请问coreldraw 修剪命令的作用和用法?
求VB 6.0的所有命令和用法以及作用~~~~~~~~~~~