java为什么不需要头文件_关于什么情况下不需要include 头文件

include 头文件 有两种情况

1. 有头文件A  头文件B

在头文件B中include头文件A

2. 有头文件A  c文件D

假如头文件B或c文件D要用到 头文件A里面声明的东西话,我们都要include头文件A。但是后来发现有时候不include 头文件A,也是可以用到A里面声明的东西,例如一些宏定义,不知道是不是makefile里面有些东西让它其作用。

想问一下大家一下,哪些东西定义在头文件中,即使本人不include头文件A, 也是可以在头文件B和c文件D中用。

解决方案

120

https://www.zhihu.com/question/38235552

10

引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

不行的,要用extern

而且头文件里尽量不要定义变量,原因是很容易出现重定义

是的 头文件 可以用来声明变量 最好不要定义变量

假设在头文件A中声明一个全局变量  头文件B 用到 但是并不include 头文件A  这种情况能否可以 (假如可以的话,就和宏的枪框一样了)

注意是全局变量 不是局部变量

不行

2e66d53234ef3b3acf664ff8d1d121d2.gif

谢谢你这么多次的回答,能否解释一下为什么只有宏可以做到 而其他变量却不能,是在编译的时候或运行的时候,有些地方不允许变量这样吗?

除了宏,您还知道其他参数可以做到和宏一样的吗?

和宏毫无关系,头文件本身是不需要编译的,只要cpp里面的全部变量能自解释就行了,这就是为什么很多人的头文件内容都不全,想复用的时候编都编不过。

20

假如你A B C三个文件,B包含了A,C再包含B,那么相当于C也包含了A

20

头文件.h,c 文件.c

本质上,都是文本文件

分为.h,.c 只是为了方便

你也可以 把头文件的东西,全部放到.c

不过,容易被误解为真正的.c

头文件往往不含实现代码

编译它是多余的,包含头文件,往往是把头文件的代码复制一份到.c 生成新的文件

然后编译新的文件

假如把.c存储为.h,并且用于包含

自动编译的时候,往往会出问题

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于什么情况下不需要include 头文件!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值