CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于头文件的包含的问题,请讨论!

楼主geni3000(建筑工)2002-04-22 15:55:31 在 VC/MFC / 基础类 提问

我在对一个大的图形系统进行升级,这个程序原来是由公司里的高手们写的,现在到了我的手上,对其中复杂的文件包含关系搞的晕头转向,程序中多处用到  
  #include   "头文件名"   和class     类名;对于他们都起到什么作用?文件包含中有什么技巧?请高手发表你的高论!! 问题点数:100、回复次数:10Top

1 楼tony1978(突击召唤师)回复于 2002-04-22 15:59:14 得分 20

尽量不要在头文件中包含头文件  
  class   类名;是声明,即说明类名是一个类的名字,这样在这个头文件中,可以用这个类名来定义指针了。在实现文件中要包含那个类的头文件。Top

2 楼opentuxedo(借哥哥的号来试试)回复于 2002-04-22 16:08:24 得分 30

要明白这个问题你最好知道编译链接的过程,看一看nmake是怎么工作的你就明白什么地方必须包含头文件,什么是方只是预声明一下就可以了。刚才UP说的对要尽量让各个文件独立,所以尽可能不让头文件包含头文件,这样就可能造成编译器找不到类型,你可以用class   xxx在找不到的地方先声明一下。而不用真正的把类包含进来。Top

3 楼geni3000(建筑工)回复于 2002-04-22 16:09:04 得分 0

按照这位大哥的说法是:  
  在头文件中用到其它类时用class   类名;这样在类声明中就可以用这个类来定义指针(能定义对象吗?)。  
  在实现文件中在对头文件进行包含,这样就避免了重复包含的问题了。  
  Top

4 楼iceneve(暗星云)回复于 2002-04-22 16:17:10 得分 20

假定有  
  a.h,a.cpp   (class   a)  
  b.h,b.cpp   (class   b)  
   
  当class   a要使用class   b来定义对象时即:  
  class   a  
  {  
  ...  
      b   bb;  
  ...  
  };  
  有两种方式通过编译。  
  1。在a.h中#include   "b.h"  
  2。在a.h中声明class   b;,然后在a.cpp中#include   "b.h"  
   
  第一种情况下:当class   b的部分接口改变时(b.h被修改),vc编译器会重新编译  
  class   a   和   class   b;  
  第二种情况下则不会。  
   
  其实这两种方式作用是相同的。Top

5 楼iceneve(暗星云)回复于 2002-04-22 16:19:39 得分 10

避免预编译循环(即重复包含)的方法是:  
   
  #ifndef   _XXXX  
  #define   _XXXX  
   
  class   name  
  ......  
   
  #endifTop

6 楼qzebra(妖怪)回复于 2002-04-22 16:45:54 得分 10

多看看有关预编译的资料Top

7 楼iceneve(暗星云)回复于 2002-04-22 16:52:21 得分 10

sorry!  
  纠正一下。  
  class   类名;是声明,即说明类名是一个类的名字,这样在这个头文件中,可以用这个类名来定义指针,但不能用来定义对象。Top

8 楼geni3000(建筑工)回复于 2002-04-22 16:59:51 得分 0

请问,在什么时候必须使用#include   “”?  
  我发现类作为基类、声明成员变量(非指针)时用class   类名;不行对吗?  
  Top

9 楼quengzi(Hades)回复于 2002-04-22 17:13:49 得分 0

kkkTop

10 楼geni3000(建筑工)回复于 2002-04-22 17:45:58 得分 0

谢谢各位的支持,多劳多得!Top

相关问题

  • 大讨论,关于C语言的头文件!
  • 大家来讨论一下,这样的头文件怎么写!
  • 请讨论ZipMagic处理文件的方法(300分)
  • 讨论:文件上传如何显示进度???(高手请进)
  • 讨论:用VB把WAVE文件转换成文本文件,同行高手请进
  • 熟悉ntfs文件系统者请进,十分有趣的讨论。
  • 熟悉ntfs文件系统者请进,十分有趣的讨论。
  • 有关压缩文件的包结构问题的讨论,高手请进
  • 高手请进,关于上传文件防木马问题讨论
  • 文件关联问题讨论?

关键词

  • 文件
  • 指针
  • 编译
  • cpp
  • 类名
  • 头
  • 类
  • 声明
  • 对象
  • 问题

得分解答快速导航

  • 帖主:geni3000
  • tony1978
  • opentuxedo
  • iceneve
  • iceneve
  • qzebra
  • iceneve

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo