避免重新声明错误,不包括警卫

时间:2016-06-23 11:10:15

标签: c include dependencies redeclaration

如果我想在不使用包含保护的情况下避免重新声明错误,那么依赖关系树必须遵循的基本规则是:仅限一个或多个树。

任何时候父母可以通过两种不同的方式到达,那么就会发生违规行为吗?

例如:

declarations.h包含string.h
data.h包括declarations.h data.c包括data.h ui.c包括data.h和string.h

这会产生重新声明错误,因为ui.c和包含string.h两种不同的方式:直接和通过data.h.因此,该结构不是树,因为ui.c具有到同一父节点的多条路径。

有没有办法让同一个父级有多条路径而不会出现重新声明错误?

1 个答案:

答案 0 :(得分:0)

在研究了这个问题一段时间后,似乎必要的图形不是树。基本上,依赖关系将是干净的,只要图形没有循环并且遵循单个基本规则,即只能存在到任何给定父级的单个路径。所以,例如:

enter image description here

因此,在这个网络中,我们看到父母是共享的,孩子也可以共享,但是没有任何地方可以有来自同一孩子的任何给定父母的多条路线。形状的一个数学术语是不相交的网络。在不相交的网络中,任何两个路径只能共享一个端点,但不能共享其他顶点/边缘。