C语言中#include "stdafx.h"这个头文件是什么意思啊?

作者&投稿:霍翰 (若有异议请与网页底部的电邮联系)
C语言#include "stdafx.h"是什么啊?求大神详解~

答:#include 是预编译指令,"stdafx.h"说明是一个在当前目录下名为stdafx的头文件。

#include "stdafx.h"
是预编译处理器把stdafx.h文件中的内容加载到程序中来。

stdafx.h

1名称的英文全称为:Standard Application Fram Extend
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。
因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。

2 详细工作原理及作用
stdafx.h中没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。
Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示:
◎AppWizard建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFCinclude文件。且这一文件可以随被选择的选项而变化。
◎AppWizard然后就建立stdafx.cpp。这个文件通常都是一样的。
◎然后AppWizard就建立起工程文件,这样第一个被编译的文件就是stdafx.cpp。
◎当VisualC++编译stdafx.cpp文件时,它将结果保存在一个名为stdafx.pch的文件里。(扩展名pch表示预编译头文件。)
◎当VisualC++编译随后的每个.cpp文件时,它阅读并使用它刚生成的.pch文件。VisualC++不再分析Windowsinclude文件,除非你又编辑了stdafx.cpp或stdafx.h。
这个技术很精巧,你不这么认为吗?(还要说一句,Microsoft并非是首先采用这种技术的公司,Borland才是。)在这个过程中你必须遵守以下规则:
◎你编写的任何.cpp文件都必须首先包含stdafx.h。
◎如果你有工程文件里的大多数.cpp文件需要.h文件,顺便将它们加在stdafx.h(后部)上,然后预编译stdafx.cpp。
◎由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件。
如果你的磁盘空间有限,你就希望能将这个你从没使用过的工程文件中的.pch文件删除。执行程序时并不需要它们,且随着工程文件的重新建立,它们也自动地重新建立。

3 如何理解其原理
通俗一点说
当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CPP都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。当然如果你不用MFC的话就不用了。即:在每个.cpp文件中都include stdafx.h 就相当于包含了其他的如iostream.h等文件

4 与stdio.h的区别
我们一般用TC或vc编译C程序的时候都要首先包含这个stdio.h头文件,这个头文件里面包含了scanf和printf函数的定义,如果我们不在程序开头include这个文件,那么你调用上面这两个函数就不会成功,它其实和c++中的iostream.h文件的作用差不多的,它们一般都已经在stdafx.h文件中被包含。

"stdafx.h"这个头文件意思是编译器通过一个头文件stdafx.h来使用预编译头文件。

"stdafx.h"头文件没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。

使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,只需要直接include这个stdafx.h文件即可。


扩展资料

编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。

预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。

参考资料来源:百度百科-stdafx.h



就是帮你包含了一些头文件在里面。。可以省点事不用自己写。。

这个是微软加进去的。C C++都没有这个说法。

只能在VC中编译过去,其他编译器的话,就需要自己写stdafx.h

好多初学者对于网友的解释根本就是一头雾水,我来给初学者们解释一下吧!这个东西不必理会,你照样能写出想要的程序,等你写完程序之后再慢慢的去深入理解“stdafx.h”这个东西。知道牛羊没事儿的时候都在干嘛吗?把自己吃下去的东西再吐出来反复嚼;我想说的是“stdafx.h”这个头文件你先咽下去(写完程序),之后在嚼(回过头来看)。因为“stdafx.h”中的东西很深奥。知道头文件是个啥就行了,就是把程序放在另一个文件当中了,仅此而已!

stdafx.h : 标准系统包含文件的包含文件。

C用MFC?


一语言中是什么意思
言读音:yán 释义:1、讲,说:言说。言喻。言道。言欢。言情。言必有中。2、说的话:言论。言辞。语言。言语。言简意赅。3、汉语的字:五言诗。七言绝句。洋洋万言。4、语助词,无义:言归于好。“言告师氏,言告言归”。5、姓。成语有:【成语】: 言之有故。【拼音】: yán zhī ...

如何看待中英语言文化中的词汇差异?
1、短语词组:汉语中"鸡皮疙瘩"在英语中为"goose flesh";汉语中"吹牛"在英语中为"talk horse";汉语中"拦路虎"在英语中为"a lion in the way";汉语中"落汤鸡"在英语中为"a drowning rat";汉语中"害群之马"在英语中为"black sheep";汉语中"胆小如鼠"在英语中为"as timid as a hare";汉语中"狐假虎威...

什么是语言发展过程中的词语缺位?网络语言是怎样解决这个问题的?举例加 ...
【答案】:词语缺位是指社会发展过程中出现很多新事物、新观念、新现象,语言中还没有现成词语来表述代称,词位相对空缺的现象。网络交际是一种全新的交际方式,一些网上行为、网上涉及的有关表达需求,在现实语言中没有现成的词语来表述,形成缺位。为了解决这个问题,网民采用两种予段来解决。第一,采用...

语言学中的任意性和双重性举例
1、语言的任意性:声音与意义的结合是任意的,二者没有本质的、必然的联系,也就是说,声音与意义的结合是不可论证的,完全是使用语言的社会集团自然而然地形成的习惯.能思维、会说话、能制造和使用工具的高等动物。2、徐冶琼提出绝对任意性和相对任意性,认为在一个词的内部,语音与语义的结合是绝对任...

c语言中%X是什么意思
C语言中%X的意思是以十六进制数形式输出整数,类似%x的输出格式还有:1.%c:单个字符 2.%d:十进制整数 3.%f :十进制浮点数 4.%o:八进制数 5. %s :字符串 6.%u:无符号十进制数 7.%%:输出百分号

语言的四要素在现代汉语中的具体表现是什么
音长区别意义的作用在汉语中表现不明显。因为汉语并没有语音长短的变化,粤语中的入声是声调的一种,不是长短的变化。但是在别的语言中,如英语,语音的长短就有着表义不同的功能。如[li:v]和[liv]就表示不同的意义,前者是leave(离开),后者是“生活”、“居住”。2、音质 音质相对要复杂些。决...

语文语法中什么是稳固性,民族性,抽象性?
(一)抽象性 抽象性是语法最基本的特征.语法就是对一个语言中各种语法单位的组合关系、聚合关系、功能类型等等的抽象概括.人们所使用的句子千差万别、数不胜数.但是,无限多的个别具体的语句中,词的结构方式、短语和句子的结构规则等却是有限的.这些结构规则、语法形式、语法手段、语法范畴和语法意义都...

英语句法学中的向心结构和离心结构是怎么回事
美国语言学家布龙菲尔德(Leonard Bloomfield)在《语言论》一书中提出著名的“向心结构”“离心结构”概念。两个直接成分中只有一个直接成分跟整体的语法功能相同的结构,叫向心结构。例如:“看书=看”,“说明白=说”。两个直接成分中没有一个直接成分跟整体的语法功能相同的结构,叫离心结构。例如“从...

C语言基本问题,%5d 是什么意思?
C语言中,“%5d”是的意思是以整形来格式化参数,并且当整数字符数少于5个情况下,多格式化一定数量空格来填充,以使得空格和整数所用字符数的总和达到至少5个。C语言中,“%5d”一般用于printf函数和sprintf函数。它们格式化字符串时,可以指定串的格式,在格式串内部使用一些以“%”开头的格式说明符来...

c语言 中sqrt 到底是什么意思 例如 x=sqrt(i+100) 在这里的意思 是干什...
c语言中sqrt到底是一个非负实数的平方根,sqrt系Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力。x=sqrt(i+100) 意思是将i+100开平方,然后赋值给x。VC 2008后为重载函数,原型为 float sqrt (float),double sqrt (double),double long sqrt(double long)。

虎亭区17132409210: c语言中的#include是什么意思? -
定泽云实: #include是一个包含程序的命令 先跟你说.h文件 .h文件就是头文件,其实它是为了方便用的,我们常用的stdio.h是包含关于C程序的输入输出的各种信息,当编译时就将头文件包含进去,比如: 我做一个头文件 #include#define PR printf /*程序...

虎亭区17132409210: 关于C语言中的“#include” -
定泽云实: #include "stdio.h" #include "math.h" main() { double x,s; printf("input number:\n"); scanf("%lf",&x); s=sin(x); printf("sine of %lf is %lf\n",x,s); } 预处理命令还有其它几种,这里的include 称为文件包含命令,其意义是把尖括号""或引...

虎亭区17132409210: C语言海伦公式 -
定泽云实: #include<math.h>#include<stdio.h>main(){float a,b,c,p,s;printf("chang kuan gao shi ?");scanf("%f%f%f",&a,&b,&c);//注意p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf("mian ji shi:%f",s);}最后吐一下糟,这个英语水平,实在是,现在都有在线字典了啊

虎亭区17132409210: C语言中#include的详细解释 应该怎么运用 -
定泽云实: 这个是C语言的头文件#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h>...

虎亭区17132409210: c语言中,开头的 #include.《......》 括号里都可以填什么,都表示什么? -
定泽云实: 一般是stdio.h因为printf和scanf两个函数在这个头文件里像如果用sqrt求平方就要用math.h了反正就是用哪个函数就写对应的头文件一般书最后有个表你可以看看

虎亭区17132409210: c语言开头的main()与#include有什么区别,高手进! -
定泽云实: 1. #include是头文件包含声明,stdio.h是标准输入输出头文件,它给了程序操作的可能性,使得程序的标准输入输出操作函数有意义,printf,scanf,putchar,getchar等,不然编译器会报错;头文件其实就是定义了这些函数的文件,它是系统提供给我们的接口.亦如:#include#include2. main() 是主函数声明; main(void) 后面的void是修饰符即说明主函数无参数传递;

虎亭区17132409210: C语言计算正整数1~100中奇数之和及偶数之和. -
定泽云实: 可以参考下面的代码: #include <stdio.h> int main() { int i; int ji=0, ou=0; for (i=1;i<=100;i++) { if (i%2 == 0) ou += i; else ji += i; } printf("奇数之和:%d\n偶数之和:%d\n", ji, ou); return 0; } 扩展资料: C语言数学函数 C语言floor()函数:求...

虎亭区17132409210: C语言中:##和#的用法 有这样一个例子: -
定泽云实: 在宏定义里,a##b就是把a,b联接起来, 比如f(1,2)就是12,但是是数. #a就是把a转化成字串,并合并. 所以 printf("%s\n",g(f(1,2)));就直接把f(1,2)转成字串了.

虎亭区17132409210: C语言中的(#include<stdio.h>和#include<math.h>)是什么意思? -
定泽云实: 1. include 称为文件包含命令,其作用是把尖括号""或引号<>内指定的文件包含到本程序中,成为本程序的一部分.被包含的文件通常是由系统提供的,其扩展名为.h 2. stdio.h就是指“standard input&output"意思就是说标准输入输出头文件!...

虎亭区17132409210: C语言之#include<conio.h>表示什么 -
定泽云实: 表示包含conio.h这个头文件,你可以运用里面的函数,如果开发平台编译的时候自动包含这个头文件,那么就可以省下#include<conio.h>这一步了 要用预编译命令"#include"将有关的"头文件"包括到用户源文件中.在头文件中包含国与用到的函数有关的信息."conio.h"函数库文件. #include<conio.h>是包含这个头文件.. 不对啊,没有是不行的,因为那个文件里才有那个清屏函数啊... 你弄错了吧...我每次用清屏函数时都加那个头文件..

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网