请教预编译头文件的作用

请问预编译头文件的作用
不是太清楚预编译头文件的作用

在网上看到一篇文章,说是如果不使用预编译头文件,一个文件经过修改后,会重新编译整个文件和在这个文件里包含的所有头文件中的东西(我想这里应该是所有包含这个文件的都要被编译一次),如果使用预编译头文件则不会再编译没有被改动的文件

按照上面的说法自己试了下,建了1个h1.h和从cpp1.cpp~cpp7.cpp七个.cpp文件,这7个.cpp文件都包含h1.h,并且工程使用预编译头文件。

之后我改了下h1.h中的内容,发现编译器还是把cpp1.cpp~cpp7.cpp都编译了一遍...

疑惑中,还望高人解答

------解决方案--------------------
包含的头文件修改了
包含它的文件要重新编译的

如果只是某个文件使用的结构之类的就放到自己的头文件里定义
不是共通的不要放到一个头文件定义
------解决方案--------------------
所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是

以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的

C/C++代码--------甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会

被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。注意生成预编

译头文件是很耗时间的。同时你得注意预编译头文件通常很大,通常有6-7M大。注意及

时清理那些没有用的预编译头文件。

也许你会问:现在的编译器都有Time stamp的功能,编译器在编译整个工程的时候,它

只会编译那些经过修改的文件,而不会去编译那些从上次编译过,到现在没有被修改过

的文件。那么为什么还要预编译头文件呢?答案在这里,我们知道编译器是以文件为单

位编译的,一个文件经过修改后,会重新编译整个文件,当然在这个文件里包含的所有

头文件中的东西(.eg Macro, Preprocesser )都要重新处理一遍。VC的预编译头文件

保存的正是这部分信息。以避免每次都要重新处理这些头文件。