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

用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

时间: 2024-10-02 12:58:10

浅谈VC中预编译的头文件放那里的问题分析_C 语言的相关文章

解析VC中预编译头文件的深入分析_C 语言

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

浅谈VC中的字节对齐

原文地址:浅谈VC中的字节对齐 前几天时,在公司和同事说到了字节对齐,一直对这个概念比较模糊,只是在<程序员面试宝典>中看到过简单的描述和一些面试题.后来在论坛中有看到有朋友在询问字节对齐的相关问题,自己也答不上来,觉得应该研究一下,所以就有了这一篇博文,是对学习的一个总结,也是对成长轨迹的一个记录.       字节对齐,又叫内存对齐,个人理解就是一种C++中的类型在内存中空间分配策略.每一种类型存储的起始地址,都要求是一个对齐模数(alignment modulus)的整数倍.问题来了,为

浅谈VC++中的内联_C 语言

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

基于VC中使用ForceInclude来强制包含stdafx.h的解决方法_C 语言

在使用VC编程中,为了加快编译,vc编译器提供了预编译的功能.即在cpp代码中包含stdafx.h,那么就可以使用到预编译.如下所示: 复制代码 代码如下: #include "stdafx.h"class Demo{public:    Demo(void);    ~Demo(void);}; 注意: #include "stdafx.h" 是自己手动写的,默认是没有的.因此,有时总会出现忘记写这个的事情,这时候编译器就会报一个错误: 复制代码 代码如下: Er

VC++中HTControl的CHTButton按钮控件类用法实例解析_C 语言

本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助.具体内容如下: 一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它.支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等.使用时请注意,窗体必须动态创建,代码段如下: m_HTBtnClose.Create(75

浅析C语言头文件和库的一些问题_C 语言

使用gcc的编译器 头文件没有包含stdlib.h,使用atoi函数(atoi函数在stdlib.h中才有声明),编译却没有出错 如果编译的时候加上-Wall选项,会有个警告,请问这是为什么?这是因为C语言一个非常傻的规定:一个函数如果没有声明函数原型,其返回值类型就是int(所谓的implicit declaration).由于atoi恰好真返回int,所以你即使不包含它的头文件也不报错.至于这个警告,是为了避免你由于忘记声明函数原型而出错. 编译器对于没有定义过的函数原型直接当作它返回int

VC中实现GB2312、BIG5、Unicode编码转换的方法_C 语言

本文主要以实例形式讨论了VC编译环境下,实现字符串和文件编码方式转换的方法,在linux下请使用Strconv来实现.具体方法如下: 一.文件编码格式转换 //GB2312 编码文件转换成 Unicode: if((file_handle = fopen(filenam,"rb")) != NULL) { //从GB2312源文件以二进制的方式读取buffer numread = fread(str_buf_pool,sizeof(char),POOL_BUFF_SIZE,file_h

VC++中HTControl控制类使用之CHTDlgBase对话框基类实例_C 语言

本文所述为VC++界面编程的一个MFC例子,基于HTControl控件类的CHTDlgBase对话框基类主文件代码.该程序可完成动态创建框架窗体,窗体外观(客户区与非客户区),调整窗体大小,无效子窗口的控制等功能. 具体实现代码如下: /**************************************************************************** | Copyright (c) 2012, | ******************************

VC中CDC、HDC、pDC区别与联系及相互转换_C 语言

1.CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd? pDC是类指针 HDC是windows句柄 通过pDC获得hdc: HDC hdc=pDC->GetSafeHdc(); 通过hdc获得pDC: CDC *pDC=new CDC; pDC->Attach(hdc); 2.hDC和CDC有本质区别 HDC是WINDOWS的一种数据类型,是设备描述句柄.而CDC是MFC里的一个类,它封装了几乎所有的关于HDC的操作.也可以这样说,HDC定义的变量指向一块内存