社区
C语言
帖子详情
一个头文件包含另外一个头文件的问题?
yanyulan
2001-10-18 03:56:04
对于C++中一个头文件中能否包含另外一个头文件的问题,以下有两种观点:
1.绝对不允许,因为所有头文件相互包含的情况都可以用在相应cpp文件中包含的方式替代
2.区别对待,某些情况下允许,某些情况下应当避免
希望各位高手发表自己的意见并且给出充分的理由和实例
...全文
855
12
打赏
收藏
一个头文件包含另外一个头文件的问题?
对于C++中一个头文件中能否包含另外一个头文件的问题,以下有两种观点: 1.绝对不允许,因为所有头文件相互包含的情况都可以用在相应cpp文件中包含的方式替代 2.区别对待,某些情况下允许,某些情况下应当避免 希望各位高手发表自己的意见并且给出充分的理由和实例
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SlaSk
2001-10-31
打赏
举报
回复
我喜欢那样用,因为。。。。不那样用有些自己写的头文件过不去。。。
不过要加个:#pragma once
xwu
2001-10-30
打赏
举报
回复
To: yanyulan()
硬性规定 "不允许头文件相互包含" 是不太合理的. 在很多情况下, 一个头文件中包含另外一个头文件是不可避免的. 例如模板类,整个就是一个头文件, 要使用它, 就必须包含整个头文件. 还有, 如果类A的头文件里定了inline function, 而且inline function调用了类B的函数, 就必须包含B的头文件.See below:
//File A.h: Forward declaration does not work here.
#include "B.h"
class A
{
...
B *b;
inline void set(){b->set();}
};
baolqun
2001-10-19
打赏
举报
回复
no_limit(no_limit) (2001-10-18 19:42:21) 得0分
同意 ybchen() ,一点补充,对于aaa.h,可能更常用的是:AAA_H,当然了,不限制!!
和我们老师说的一样
dogandcat
2001-10-19
打赏
举报
回复
这个要具体问题具体对待, 贵公司的规范要求不允许头文件互相包含, 可能是考虑到程序的可读性以及可维护性, 但从技术角度看互相包含头文件的一些问题是可以避免的.
yanyulan
2001-10-19
打赏
举报
回复
对不起各位,现在的问题是,我公司的c/c++编码规范中,明确规定:不允许头文件相互包含(即一个头文件中包含另外一个头文件,并非指循环包含)。所以我想在这里请大家发表自己的见解。
sxxny
2001-10-18
打赏
举报
回复
绝对用许,I THINK
不然的话我们用一个头文件事岂不还必须考虑那个头文件里面还需要包含什么头文件吗?
真是不可思议!!
yanyulan
2001-10-18
打赏
举报
回复
对不起各位,我的意思是:C++语法当然是允许头文件相互包含,但从编程风格来说,各位更倾向于哪一种,各自的优缺点分别是什么?
no_limit
2001-10-18
打赏
举报
回复
同意 ybchen() ,一点补充,对于aaa.h,可能更常用的是:AAA_H,当然了,不限制!!
gffly
2001-10-18
打赏
举报
回复
可以
std::coding::peasant
2001-10-18
打赏
举报
回复
允许的,例如下面的 aaa.h 包含 bbb.h , bbb.h 包含 aaa.h,这些也是 .h 文件的标准写法
//------------------
//aaa.h
#ifndef _aaa_h_ybchen_
#define _aaa_h_ybchen_
#include <stdio.h>
#include "bbb.h"
extern int a1;
extern void a2(int x);
//.....
#endif
//------------------
//bbb.h
#ifndef _bbb_h_ybchen_
#define _bbb_h_ybchen_
#include <stdio.h>
#include "aaa.h"
extern int b1;
extern int b2(int x);
//.....
#endif
//------------------
//aaa.cpp
int a1 = 0;
void a2(int x);
{
//...
}
//-------------
//bbb.cpp
int b1 = 0;
int b2(int x);
{
//....
}
lzumcj
2001-10-18
打赏
举报
回复
C++是允许头文件嵌套的
xwu
2001-10-18
打赏
举报
回复
我决得是允许的. 很多STL implementation 就这么干.
当然, 如果能用简单的forward declaration 解决的就应该避免在一个头文件包含另外一个头文件.
C语言中
一个
头
文件引用另外
一个
头
文件中的非基础类型定义的
问题
在c语言中如何在
一个
头
文件中引用另外
一个
头
文件定义的结构体或者联合体 在定义变量的时候无意间发现在源程序中引用的
头文件
编译后提示重复定义的错误,找了很多资料,还是没有解决,最后在看前辈的代码时才反应过来,遂记录于此。 先看定义报错的引用 main.c #include "define_all.h" #include "variable.h" define_all.h ...
为什么会有
头文件
循环依赖?搜索路径?
头文件
包含?如何包含
头文件
最多只有一次?
有
头文件
的编程语言体系中,
头文件
的本意是给其他文件提供基本的类型、声明或者宏等讯息供参考,让编译器知晓这些类型讯息。一般的原则是,越是common的
头文件
会被其他
头文件
依赖,即xxx.h很可能会包含common.h. 但定义common以及不同
头文件
的依赖很可能陷入
一个
困境,大家都想要对方
头文件
的讯息,这就出现了
头文件
循环依赖。
C语言
头文件
相互包含的
问题
头文件
相互包含的
问题
问题
:
头文件
交叉包含是否会导致递归包含,导致编译出错? 如果不会因为递归包含出错,那么交叉包含是不是完全没
问题
? 1.1
头文件
交叉包含是否会导致递归包含,导致编译出错?(无#ifndef) 假若
头文件
a包含了
头文件
b、
头文件
b又包含了
头文件
a,那么在#include
头文件
a的时候,就可能会导致递归包含,从而导致编译出错; /* a.h */ #include &amp;quot;b...
一个
头
文件可以包含另一
头文件
吗?
一个
头
文件可以包含另一
头文件
吗? 这是个风格
问题
, 因此有不少的争论。很多人认为“嵌套包含文件” 应该避免:盛名远播的“印第安山风格指南”(Indian Hill Style Guide, 参见
问题
17.7) 对此嗤之以鼻; 它让相关定义更难找到; 如果
一个
文件被包含了两次, 它会导致重复定义错误; 同时他会令makefile 的人工维护十分困难。另一方面, 它使模块化使用
头文件
成为一种可能(
一个
头
Linux C
头文件
互相包含
问题
头文件
相互包含的
问题
问题
:
头文件
交叉包含是否会导致递归包含,导致编译出错? 如果不会因为递归包含出错,那么交叉包含是不是完全没
问题
? 1.1
头文件
交叉包含是否会导致递归包含,导致编译出错?(无#ifndef) 假若
头文件
a包含了
头文件
b、
头文件
b又包含了
头文件
a,那么在#include
头文件
a的时候,就可能会导致递归包含,从而导致编译出错; /* a.h */ #include "b...
C语言
70,014
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章