首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC的预编译头文件怎么使用

2012-04-21 
VC的预编译头文件如何使用?大家都知道,使用VC自动生成带预编译头文件的工程,提高编译速度节省时间神马的。

VC的预编译头文件如何使用?
大家都知道,使用VC自动生成带预编译头文件的工程,提高编译速度节省时间神马的。我的疑问是:
1、例如iostream、vector这样的库文件,我几乎所有的cpp文件都会用到,所以我就把它们写到stdafx.h中,用于预编译,这样可以吗?

C/C++ code
//stdafx.h#pragma once#include <cmath>#include <iostream>#include <vector>using namespace std;

如果可以,那么
2、在同一工程中我定义了一个类,其声明文件为Eg.h,实现文件为Eg.cpp,那么stdafx.h是应该包含在Eg.cpp中的,但是如果在Eg.h中声明的类中使用到了vector对象,那应该怎么办呢?
C/C++ code
//Eg.h#pragma onceclass A{    vector a;}

预编译头文件,一开始就没搞懂,没怎么用过,真是一头雾水,盼解答~

[解决办法]
你可以将一些稳定并且经常用的库包含进预编译头文件。但是我觉得你不应该用using namespace std;如果这样的话,你的整个项目都限制在std命名空间里了,容易导致冲突了。
[解决办法]
Eg.h中包含stdafx.h
Eg.cpp 包含Eg.h 就可以了
第一个问题我也不确定,等高人
[解决办法]
C/C++ code
//Eg.h#pragma onceclass A{    vector a;}
[解决办法]
等价于
#ifndef _HEADER 
#deinfe _HEADER 
#endif
[解决办法]
>2、在同一工程中我定义了一个类,其声明文件为Eg.h,实现文件为Eg.cpp,那么stdafx.h是应该包含在Eg.cpp中的,但是如果在Eg.h中声明的类中使用到了vector对象,那应该怎么办呢?

照你所说,Eg.cpp应该是这样
#include "stdafx.h"
#include "Eg.h"

因为在包含Eg.h之前已经包含了stdafx,h,所以即使Eg.h用了vector,编译器也能认。

热点排行