锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / VC++ / stdafx.h、stdafx.h原理、stdafx.h细节和stdafx.h用法
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源心得,转载请注明:“锐英源www.wisestudy.cn,孙老师作品,电话13803810136。”需要全文内容也请联系孙老师。


背景

锐英源VC++培训强调关键动手能力,掌握经典开源项目,突出软件工程学习,以互联网和积木式学习法,快速突破到中级程序员水平,适合爱好者和考试者培训学习。

VC++ stdafx.h是经常用的一种技术,这里列出了教学大纲的前面部分,VC++ stdafx.h视频收费10元,转帐给支付宝lookfar@163.com或微信ryysoft,注明:“VC++stdafx.h视频”。

VC自学者通过我们的VC++stdafx.h教程也能获益良多,谢谢关注。

stdafx.h原理

下面是说这个stdafx.h头文件的作用,stdafx的意思为:Standard Application Frame Extend。标准应用框架扩展。并且AFX也代表了MFC的意思。

Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作,如下所示:
◎AppWizard(应用程序向导)建立了文件stdafx.h,该文件包含了所有当前工程文件需要的MFCinclude文件。且这一文件可以随被选择的选项而变化。Socket,则会包含afxsock.h
◎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。 不过某些不信赖MFC,而只是提供一些函数给其它源文件使用,且编译选项和向导生成的文件不一样,可以不包含它。
◎如果你有工程文件里的大多数.cpp文件需要.h文件,顺便将它们加在stdafx.h(后部)上,然后预编译stdafx.cpp。
◎由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件。
如果你的磁盘空间有限,你就希望能将这个你从没使用过的工程文件中的.pch文件删除。执行程序时并不需要它们,且随着工程文件的重新建立,它们也自动地重新建立。 

 

stdafx.h细节

这个文件有以下知识点:

  • afxdb.h是支持数据库用的,如果想在工程里用MFC里的ODBC数据库相关类,要包含这个头文件。
  • 包含用的<>和""的区别你知道吧?<>是从系统默认指定的包含路径包含头文件,“”是从工程目录所在文件的当前目录下进行包含。并且””里可以指定包含文件的绝对路径和相对路径。有时候文件找不到,可能是路径不对。
  • 有的时候.h是省略的? 不带.h的是命名空间 #include <stream>
  • 灰色代码的作用和导致灰色的宏的说明

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
这两句是什么意思?
这是注释,起到提示的作用。也代表这些代码是被MFC和VC向导管理。不能轻易修改

  • 什么时候要包含stdafx.h文件?

#include "stdafx.h"
只要是通过向导建立的类的cpp文件都要在开始带这个语句

  • 一些编译指令的说明

#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
这段代码在干嘛?
如果没有定义__AFXWIN_H__ ,则报错:在包含这个文件前需要包含stdafx.h
including this file for PCH?这个呢?
就是为pch包含这个文件的意思。pch是编译时的一个输出文件



stdafx.h用法

  • ADO的库的包含

#pragma warning (disable: 4146)
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "EndOfFile")
using namespace ADODB;
#pragma warning (default: 4146)

  • 标准头文件的包含

#include <afxdisp.h>
#include <math.h>


VC++stdafx.h教程GIF

stdafx.h

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市金水区郑州大学北校区院(文化路97号院)内