#include“stdafx.h”详解
来源:互联网 发布:js判断元素是否隐藏 编辑:程序博客网 时间:2024/05/16 18:48
文章转载自:http://blog.csdn.net/qingkong8832/article/details/6695123
1,用VS2008新建项目,选择【Win32】-【Win32控制台应用程序】-输入名称:Test-【确定】
再选【下一步】-默认情况下,我们都是在【空项目】前打上对勾,建立一个纯的C或C++程序。
我们这里选择默认,即【预编译头】前打上对勾,之后【完成】
2,在Test项目中,头文件有stdafx.h和targetver.h,源文件有stdafx.cpp和Test.cpp,还有一个ReadMe.txt文件。
3,默认的主函数为
和我们一般的写的程序不一样,我们一般会写成下面的形式:
4,我们要纠结,这里怎么没有了stdio.h了呢,取而代之的是stdafx.h呢?
我们打开stdafx.h文件,如下:
可以看到,这里包含了stdio.h库文件,为什么包含到这里呢?我们先不急着解答。
先看看,stdafx.cpp文件:
这里面只有包含的库文件,没有操作,它是做什么用的呢?
在ReadMe.txt中,我们看到这么一段话:
其他标准文件:
StdAfx.h, StdAfx.cpp
这些文件用于生成名为 Test.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。
原来是生成预编译头文件!
5,百科上参看下:
6,可以知道预编译,是为了提高编译速度!
再看下面一段话
要点:(1), Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。(2),MFC中,你编写的任何.cpp文件都必须首先包含stdafx.h。
(3),由于.pch文件具有大量的符号信息,它是你的工程文件里最大的文件,不需要的时候可以删除。
7,我们可以自己设置自己的预编译文件,不一定非要是stdafx.h
右击stdafx.cpp文件,选择【属性】-【C/C++】-【预编译头】-【创建/使用预编译头】
可以看到有3个选项:【创建预编译头】、【使用预编译头】和【不使用预编译头】。
stdafx.cpp肯定选择的是【创建预编译头】
============================================================================
再右击Test.cpp文件,选择【属性】-【C/C++】-【预编译头】-【创建/使用预编译头】
可见,它选择的是【使用预编译头】,下面选的文件是StdAfx.h文件,最下面指明的是pch文件的路径
================================================================================
如何创建自己的预编译文件,其实过程正如上面我们讲的过程。
如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么
1,把这些头文件全部写到一个头文件里面去,比如写到preh.h
2,写一个preh.c,里面只一句话:#include "preh.h" ,为了生存pch预编译文件
3,对于preh.c,在【属性】里面设置【创建预编译头】,对于其他.c文件,设置【使用预编译头】
- #include“stdafx.h”详解
- #include“stdafx.h”详解
- #include“stdafx.h”详解
- #include "stdafx.h" 详解
- #include“stdafx.h”详解
- #include“stdafx.h”详解
- #include“stdafx.h”详解
- C语言中#include "stdafx.h"详解
- Not Include "stdafx.h"
- #include "stdafx.h"
- 关于#include "stdafx.h"
- 关于#include "stdafx.h"
- #include "stdafx.h" 作用
- 关于#include "stdafx.h"
- #include "stdafx.h" 作用
- 关于#include "stdafx.h
- #include "stdafx.h" 作用
- C++ : #include "stdafx.h"
- Spring Boot系列(五):spring data jpa的使用
- 添加camera后摄,导致前摄无法打开,现象是没有camera切换图标
- Linux平台下快速搭建FTP服务器
- Linux笔记(1)_xshell链接vmware本地虚拟机
- github常用命令
- #include“stdafx.h”详解
- 几个常用的工具类
- 简析CSS中position属性值的区别
- bzoj3460: Jc的宿舍
- Windows程序设计-多任务和多线程
- Linux/Unix ulimit命令详解
- 谈谈python的GIL、多线程、多进程
- log4j
- Spring Boot系列(六):如何优雅的使用mybatis