田海蓉 老公徐明:关于VC的(求教)

来源:百度文库 编辑:高校问答 时间:2024/05/08 12:12:17
头文件StdAfx.h是做什么用的?怎么所有的程序都有...
经常在它上面出错....
求教高手...

stdafx.h是预编译头文件

它除了处理C中#include一样的标准包含文件外,还处理译的宏, 一般在里面使用#include可以的, 如果试图在里面定义全局变量可以就经常出错.

加载mfc和windows编程相关文件的
如winodws api

必须放在包含文件的第一行,否则会编译出错

关于stdafx.h的作用:
Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
为避免这种浪费,AppWizard和Visual C++编译程序一起进行工作,如下所示:
AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFC include文件。且这一文件可以随被选择的选项而变化。
AppWizard然后就建立stdafx.cpp。这个文件通常都是一样的。
然后AppWizard就建立起工程文件,这样第一个被编译的文件就是stdafx.cpp。
当Visual C++编译stdafx.cpp文件时,它将结果保存在一个名为stdafx.pch的文件里。 (扩展名pch表示预编译头文件。)
当Visual C++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。 Visual C++不再分析Windows include文件,除非你又编缉了stdafx.cpp或stdafx.h。

2.编译程序中老出现“fatal error C1010: unexpected end of file while looking for precompiled header directive”这是怎么一回事?

(1)肯定是一个新添加的类的.cpp文件开头没包含stdafx.h,在该文件最前面加上即可。

(2)可以使用右键点击项目工程中的该cpp文件,选择setting,在c/c++栏,选择PreCompiled headers,然后设置第一选项,选择不使用预编译头,解决这个问题。

C/C++程序通常都需要包含头文件,而头文件也可以包含其它的头文件。这就造成一个后果:哪怕一个很简单的程序,都有可能包含非常多的头文件,造成源代码文件极速澎胀--很简单的例子,打印HelloWorld的程序,一般只要5行就可以了,但是编译器在把stdio.h头文件全部包含完毕时,就至少有几千行了……
这样,就造成一个直接的后果,C/C++程序规模越大,编译速度越慢。一个极大规模的程序重新编译(Rebuild)一次,可能需要好几天。
同时人们发现,有许多的C文件包含的头文件是一样的。如stdlib.h头文件可能在一个项目中的多数文件中都被包含,但编译器在编译时却每遇到一个新文件,都重新包含stdlib.h,并且重新编译。经测试发现,这类的重复包含和重复编译占用了编译器的多数时间。
为了避免这一问题,编译器厂家提出了预编译头文件的方法:把项目中都要包含的头文件专门编译一次,生成预编译文件,以后再遇到已经预编译的头文件时,不需要再包含和编译了,直接从预编译文件中提取编译结果就可以了。这一方法大大加快了编译时间,取得了良好的效果。
不同的编译器,对待预编译的方法是不同的。对于VC来说,通常作法是把所有需要预编译的头文件都写在一个专门的头文件中,然后,让所有源文件包含它。VC向导生成的专门的预编译头文件名就是StdAfx.h(你可以在项目编译选项中改变它)。这样,VC在编译开始的时候,先把stdafx.h预编译一次,然后再开始编译其它源代码。
为了尽可能的加快编译速度,你应该把经常用到的头文件都包含到预编译当中--当然,如果把所有的头文件都预编译可能会造成预编译文件变得极大,编译速度减慢,以及程序结构变差等后果。哪些头文件需要预编译,这是一个需要平衡的选择。

另外,预编译功能并非是必须的,一般编译都允许取消这个功能。VC也可以取消它,这样,就不需要每个源文件都包含stdafx.h。

重新下载另外版本的visual studio 6 程序版本有错 或者你本身的代码有错 试编写简单的程序试看看能不能编辑! 回答多不一定代表好 只能代表冲baidu上搜索答案粘贴上去一种不负责任的行为`