stdafx是预编译头文件,也就是说,这个文件在编译开始的时候只编译一次,把编译结果保存起来,以后再有其他的类包含这个头文件时,就不需要再次编译了。所以一般把最常用的头文件都放到stdafx里面,这样可以大幅度提高编译速度。
stdafx.h说明:
stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件((如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
targerver.h说明:
定义程序运行的环境,如限制程序只能在XP下运行,限制程序在只能在Vin7下运行或限制程序只能在XP以上系统运行,或限制程序只能在Server2003以上系统运行。
用法:
#ifndef WINVER //程序中没有定义WINVER宏时
#define WINVER 0x0600 // 定义WINVER为0x0600 //0x0600表示Windows Vista
#endif
#ifndef _WIN32_WINNT // 程序中没有定义_WIN32_WINNT宏时
#define _WIN32_WINNT 0x0600 // 定义_WIN32_WINNT为0x0600 //0x0600表示Windows Vista
#endif
附:
0×0500 表示Windows 2000,
0×0501为Windows XP,
0×0502为Windows Server 2003,
0×0600 为 Windows Vista。
实际使用下图所示:
在vs2013下测试了一下,选中与否生成的项目结构是一样的。如果不选中预编译头,只保留mycpp1.cpp并作出相应修改,构建是可以通过的。如果是勾选了预编译头,只保留mycpp1.cpp是不可以编译通过的。正如最快回答中所说的,不选中,stdafx.h只是个普通的头文件,产生的文件结构一样只是采用了同一个模板而已。如果你仔细查看过工程的属性里有个选项就是预编译头,创建项目的时候预编译头的勾选与否,对应的就是这里这个选项,对应到编译阶段就是是否查找stdafx.h并且将它视为预编译头。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)