【发布时间】:2016-06-23 11:10:14
【问题描述】:
如果我想在不使用包含保护的情况下避免重新声明错误,那么依赖树必须是这样的基本规则:仅一棵或多棵树。
任何时候可以通过两种不同的方式联系到父母,那么就会发生违规行为?
例如:
declarations.h 包括 string.h
data.h 包括声明.h
data.c 包含 data.h
ui.c 包括 data.h 和 string.h
这会产生重新声明错误,因为 ui.c 和包含 string.h 有两种不同的方式:直接和通过 data.h。因此,该结构不是树,因为 ui.c 有多个路径到同一个父级。
有没有办法让多个路径指向同一个父级并且不会出现重新声明错误?
【问题讨论】:
-
我不明白。请您更清楚地说明您的假设和真正的问题吗?
-
与独特的依赖树相比,提出独特的包含守卫可能很多容易。你真正想做什么?
-
让您的生活轻松自在,始终在您编写的每个头文件中使用“包含保护”。很简单,使用
_h 作为包含保护。查看任何系统头文件: #ifndef <filename>_h #define <filename>_h并在文件末尾:#endif这三行是所有需要添加到头文件以具有“包含保护”的内容 -
我不想使用警卫。我想要一个不依赖守卫的干净依赖网络。我需要了解网络的可行形态才能实现这一目标。
-
实现您想要的最简单的方法是“将所有内容放在一个文件中” - 这是一个非常明确的依赖关系。这也表明您想要实现的目标是多么不可取。你想要使用守卫——只是你还不知道而已。
标签: c include dependencies redeclaration