include问题

degree_37 2008-11-05 02:53:46
描述:

有如下几个文件:
a.h,a.cpp
b.h,b.cpp
c.h

下面两个问题是孤立的.

问题一:想在a.cpp中用到c.h中的内容,我include放在a.h还是放在a.cpp中呢?

问题二:想在a.cpp和b.cpp中同时用到c.h,而且a.cpp b.cpp属于同一project,a.cpp先build.那我还用在b.cpp中include c.h吧?如果在b.cpp中也include了c.h是不是就要在c.h中加上#program once或者IF DEFINE _C.H之类的呢?
...全文
161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_sharp 2008-11-05
  • 打赏
  • 举报
回复
1. 放在a.cpp中
2. 用到c.h就需要include,所以b.cpp需要#include "c.h"

c.h中最好加上

#ifndef _C_H_
#define _C_H_
#endif
小猴饲养员 2008-11-05
  • 打赏
  • 举报
回复
?楼上说的可是 #program once或者#ifndef __C_H__ #define 只存在microsoft的标准中,并非包含于标准C/C++???
ericli981 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 degree_37 的帖子:]
描述:

有如下几个文件:
a.h,a.cpp
b.h,b.cpp
c.h

下面两个问题是孤立的.

问题一:想在a.cpp中用到c.h中的内容,我include放在a.h还是放在a.cpp中呢?

问题二:想在a.cpp和b.cpp中同时用到c.h,而且a.cpp b.cpp属于同一project,a.cpp先build.那我还用在b.cpp中include c.h吧?如果在b.cpp中也include了c.h是不是就要在c.h中加上#program once或者IF DEFINE _C.H之类的呢?
[/Quote]

1. 只是在a.cpp中用到c.h中的内容的话,c.h就放在a.cpp中就可以了。
2. 如果a.cpp和b.cpp都用到c.h的话,两个cpp文件都应该包含c.h,如果b.cpp不包含c.h的话,编译的时候会报错的。如果c.h会被包含在不同的文件中,并且不同的文件又有包含关系,比如c.h包含在a.h中,而b.cpp包含了a.h和c.h,那么就重复包含了,为了避免这样的问题发生,你可以在c.h中加上#if define ...这样的宏。
fallening 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 degree_37 的回复:]


加上#program once或者#ifndef __C_H__ #define __C_H__ 也会降低效率么?

[/Quote]

这样代码变成M$ Only了,别的编译器报错
CCrunning 2008-11-05
  • 打赏
  • 举报
回复
LS很详细,受教了
bingosoftware 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 degree_37 的回复:]
引用 4 楼 fallening 的回复:
引用 3 楼 cyj626 的回复:


多include几下没有关系把?

会带来编译效率的降低


加上#program once或者#ifndef __C_H__ #define __C_H__ 也会降低效率么?
[/Quote]

这个不会,使用#program once 或 #ifndef 这些宏之后,编译器如果已经编译过该文件,就不会再进行编译了。
degree_37 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fallening 的回复:]
引用 3 楼 cyj626 的回复:


多include几下没有关系把?

会带来编译效率的降低
[/Quote]

加上#program once或者#ifndef __C_H__ #define __C_H__ 也会降低效率么?
fallening 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cyj626 的回复:]


多include几下没有关系把?
[/Quote]
会带来编译效率的降低
cyj626 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jjzhk 的回复:]
1.放在a.cpp中。
2.需要在b.cpp中加入c.h。
c.h中加上#program once就可以了。
[/Quote]
多include几下没有关系把?
xhs_lh04 2008-11-05
  • 打赏
  • 举报
回复
问题一,如果是你a.h就用到必须放到a.h里,如果只是a.cpp里用到.那a.cpp或者a.h里都可
需要的,
你在定义头文件时加上
#ifndef __C_H__
#define __C_H__
...
...
#endif
就可以了



JJZHK 2008-11-05
  • 打赏
  • 举报
回复
1.放在a.cpp中。
2.需要在b.cpp中加入c.h。
c.h中加上#program once就可以了。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧