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中用。
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
和宏毫无关系,头文件本身是不需要编译的,只要cpp里面的全部变量能自解释就行了,这就是为什么很多人的头文件内容都不全,想复用的时候编都编不过。
20
假如你A B C三个文件,B包含了A,C再包含B,那么相当于C也包含了A
20
头文件.h,c 文件.c
本质上,都是文本文件
分为.h,.c 只是为了方便
你也可以 把头文件的东西,全部放到.c
不过,容易被误解为真正的.c
头文件往往不含实现代码
编译它是多余的,包含头文件,往往是把头文件的代码复制一份到.c 生成新的文件
然后编译新的文件
假如把.c存储为.h,并且用于包含
自动编译的时候,往往会出问题
本质上,都是文本文件
分为.h,.c 只是为了方便
你也可以 把头文件的东西,全部放到.c
不过,容易被误解为真正的.c
头文件往往不含实现代码
编译它是多余的,包含头文件,往往是把头文件的代码复制一份到.c 生成新的文件
然后编译新的文件
假如把.c存储为.h,并且用于包含
自动编译的时候,往往会出问题