浅谈VC中预编译的头文件放那里的问题分析

用C++写程序,肯定要用预编译头文件,就是那个stdafx.h.
不过我一直以为只要在.cpp文件中包含stdafx.h 就使用了预编译头文件,其实不对。
在VC++中,预编译头文件是指放到stdafx.h中的头文件才会有效果。
如下:
file: stdafx.h


代码如下:

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT        // Allow use of features specific to Windows XP or later.                  
#define _WIN32_WINNT 0x0501    // Change this to the appropriate value to target other versions of Windows.
#endif                       
#define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers

代码如下:

// 各位注意,要想使用预编译效果的头文件要放这里。
#include <Windows.h>
#include "xxx.h"

代码如下:

// TODO: reference additional headers your program requires here

在stdafx.cpp中保持不变即可,默认如下:


代码如下:

// stdafx.cpp : source file that includes just the standard includes
// CPPTestHelper.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

(0)

相关推荐

  • VC6.0常见编译错误提示附解决方法

    (1)error C2001: newline in constant 编号:C2001直译:在常量中出现了换行.错误分析: 1.①字符串常量.字符常量中是否有换行.2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号.3.③在这语句中,某个字符创常量中是否出现了双引号字符""",但是没有使用转义符"\"".4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号.5.⑤是否在某句语句的尾部,或语句的中间误输入了一个单引号或双引号. (2)er

  • 解析VC中预编译头文件的深入分析

    一.为什么预编译头文件:预编译头的概念: 所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++代码,甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变.如果这些代码被修改,则需要重新编译生成预编译头文件.注意生成预编译头文件是很耗时间的.同时你得注意预编译头文件通常很大,通常有6-7M大.注意及时清理那些没有用的预编译头文件.也许你会问:现在的编译器都有

  • 终于明白了tc编译的dos程序和vc编译的win32控制台程序的区别

    它们有着本质的区别:1:一个是16的DOS程序,一个是标准的32的Windows应用程序.前者依然受着64KB内存分段约束,后者无忧无虑地使用着4GB内存地址空间.它们本来就是运行在不同的操作系统上的.别把他们混淆.DOS程序可以运行在windows上是因为有NTVDM.而你把VC生成的控制台程序放到DOS下只会得到!?This program cannot be run in DOS mode.2:如果你是用标准库编写的话,代码应该没多大差异的.但执行时调用库方式却差天共地.前者通过API模拟

  • PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解

    VC6:legacy Visual Studio 6 compiler,就是使用这个编译器编译的.VC9:Visual Studio 2008 compiler,就是用微软的VS编辑器编译的.由于apache.org只提供VC6的版本,所以使用原版apache时只能使用VC6.(www.apachelounge.com上有apache VC9的版本提供,应该可以和PHP VC9配合,没用过)TS:Thread Safe 线程安全, 执行时会进行线程(Thread)安全检查,以防止有新要求就启动新

  • 减小VC6编译生成的exe文件的大小的方法

    1.减小VC6编译生成的exe文件的大小,最有效的方法就是: 步骤: 1.使用release版本 2.代码中增加:#pragma comment(linker, "/OPT:nowin98 ") 3.project--> setting--> c/c++--> link-> 勾上Ignore all default libraries 4.project--> setting--> c/c++--> link-> object/libra

  • tc编译的dos程序和vc编译的win32控制台程序的异同

    它们有着本质的区别:1:一个是16的DOS程序,一个是标准的32的Windows应用程序.前者依然受着64KB内存分段约束,后者无忧无虑地使用着4GB内存地址空间.它们本来就是运行在不同的操作系统上的.别把他们混淆.DOS程序可以运行在windows上是因为有NTVDM.而你把VC生成的控制台程序放到DOS下只会得到!?This program cannot be run in DOS mode.2:如果你是用标准库编写的话,代码应该没多大差异的.但执行时调用库方式却差天共地.前者通过API模拟

  • 浅谈VC中预编译的头文件放那里的问题分析

    用C++写程序,肯定要用预编译头文件,就是那个stdafx.h.不过我一直以为只要在.cpp文件中包含stdafx.h 就使用了预编译头文件,其实不对.在VC++中,预编译头文件是指放到stdafx.h中的头文件才会有效果.如下: file: stdafx.h 复制代码 代码如下: // stdafx.h : include file for standard system include files,// or project specific include files that are u

  • 浅谈python中对于json写入txt文件的编码问题

    最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unicode编码的格式. 接下来就是各种翻阅文档,查找谷歌和度娘,但是都没有具体的说明是什么问题. 结果根据自己的代码发现,原来是一句代码写到后面去了. name = json.dumps('中国你好', ensure_ascii=False) #重点就是这一句代码 date = time.strftime('%Y-%m-%d', time.localtime(ti

  • 浅谈VC++中的内联

    内联的语法 在类声明中定义方法: 内联方法放在类声明之外,但必须出现在头文件中,且内联方法声明中使用inline标识: 注:inline只是对编译器的建议,是否内联的决定权在编译器: 内联节省的开销 函数调用开销 调用间优化 优秀的编译器可是内联方法的边界难以区分(将代码内联后,对代码进行重新排列) 内联带来的问题 代码膨胀(空间开销) 由于代码膨胀带来的页面缓存命中率下降 编译时间增加 修改文件后相关文件都需要重新编译: 由于函数边界模糊,该内联函数遇到问题后不好排查: 内联函数的建议 优化时

  • 浅谈VS中添加头文件时显示无法找到文件的问题

    目录或库文件名中包含汉字或空格的话,请将其用半角双引号括住. 项目.属性.C/C++.附加包含目录:填写附加头文件所在目录 分号间隔多项 项目.属性.链接器.附加库目录:填写附加依赖库所在目录 分号间隔多项 项目.属性.链接器(点前面的+展开).输入.附加依赖项:填写附加依赖库的名字.lib 空格间隔多项 这样在我们添加现有项后,经常出现的找不到源文件等等问题就解决了 以上这篇浅谈VS中添加头文件时显示无法找到文件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们

  • 浅谈go中cgo的几种使用方式

    目录 最简单的CGO程序 源码方式调用C函数 内部机制 编译和链接参数 编译参数:CFLAGS/CPPFLAGS/CXXFLAGS 链接参数:LDFLAGS 通过静态库的方式调用C函数 通过动态库的方式调用C函数 最简单的CGO程序 //cgo.go package main import "C" func main(){     println("hello cgo") } 上述代码是一个完整的CGO程序,通过import "C"语句启动了CG

  • 浅谈c++中的stl中的map用法详解

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存在着一一

  • 浅谈Qt中使用CEF的几个要点(Windows下)

    最近项目中要在Qt中使用CEF(Chromium Embedded Framework),在这里总结下其中的几个要点. 下载合适的CEF版本 关于CEF的简介我们这里就不做介绍了,下载CEF可以有2种选择: 1.源码:强烈不建议下载源代码并编译构建(学习代码除外),下载源码需要你FQ.有良好的网速(要下载)和足够的耐心(据说有4.5个G,真的要下半天). 2.自动构建版本:推荐这个使用这个版本.该版本提供了大部分已经编译完成的动态库及资源,只需要开发者手动编译一个wrapper静态库就可以了.这

  • 浅谈JS中var,let和const的区别

    目录 区别1 区别2 区别3 区别4 区别5 区别6 区别7 区别1 let和var用来声明变量,const用来声明常量. 变量就是赋值后可以改变它的值,常量就是赋值后就不能改变它的值. 当声明为对象时,可以直接修改对象内的属性值 const age = 26; age = 36; // TypeError: 给常量赋值 // const声明的作用域也是块 const name = 'Matt'; if (true) { const name = 'Nicholas'; } console.lo

  • 浅谈PHP中的数据传输CURL

    确认是否安装了CURL扩展 Linux下命令: [root@fengniu020 ~]# php -i | grep -i curl Additional .ini files parsed => /etc/php.d/curl.ini, curl cURL support => enabled cURL Information => 7.19.7 curl操作步骤解析: CURL实例 1.一个简单的curl,抓取百度首页 2.下载一个网页并把内容中的"百度"替换为&

随机推荐