黑马程序员技术交流社区
标题:
关于文件包含的问题
[打印本页]
作者:
D调的沉默
时间:
2014-4-25 10:56
标题:
关于文件包含的问题
本帖最后由 D调的沉默 于 2014-5-4 11:38 编辑
做博客时遇到文件包含的问题,想问下如果a。h包含b。h,b。h又包含a。h这样造成循环,为造成什么的后果,只知道不能这么做,但是为什么不能这么做,和这么做的后果时什么不知道,求明白的大神解释
作者:
悟中生有
时间:
2014-4-25 12:42
我是这样理解的:这样会引起死循环的,会报错的。也就是a复制b,b复制a,就不知道到底该谁复制谁了?希望能帮到你。
作者:
Freedam
时间:
2014-4-26 00:43
举例说明吧
one.h文件如下:
#include <two.h>
void test();
复制代码
two.h文件如下:
#include <one.h>
void test2();
复制代码
包含头文件就是将头文件的内容原模原样地拷贝过来,那one.h文件拷贝之后如下:
#include <one.h>
void test2();
void test();
复制代码
变成这样之后再进行拷贝:
#include <one.h>
void test2();
void test();
void test2();
void test();
复制代码
one.h又把自己拷贝了一遍,这样一次一次地拷贝自己形成了死循环。
反之先拷贝two.h文件也是一样都是拷贝自己的死循环。
作者:
gaoxinglei123
时间:
2014-4-26 07:53
无限循环下去。a.h把b.h内容包含进去以后又要处理b里面的include,又把a包含进去。再包含b然后a然后b再a不会结束
作者:
NenKeer
时间:
2014-4-28 21:54
为了避免重复包含,头文件中要有宏定义和条件编译的代码
#ifndef ABC //如果没有宏定义ABC的话 编译一下代码
#define ABC //宏定义ABC
int sum(int n1,int n2); //该头文件所包含的一些函数声明
#endif
复制代码
因为包含一次之后 就有了ABC的宏定义,第二次包含处理的时候,就不会在包含了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2