让我先描述一下情况,然后我会问我的问题。
我有一个非常通用的模块 A。它由一个 c 和一个 h 文件组成。它唯一的依赖是 stdint.h 文件。
还有使用模块 A 的模块 B (#include "module_A.h")。还有另一个模块 C 也使用模块 A。B 和 C 模块都通过 svn:externals 属性对模块 A “托管”具有依赖关系,以确保使用模块 B 或 C 的任何人也已签出模块 A。
模块 B 和 C 彼此无关。在一些项目的开发过程中,碰巧需要模块 B 和 C。已在项目中设置 svn:externals 属性以将这些模块放入项目目录。现在我们在项目目录结构中有这样的东西:
src/module_B/module_B.c
src/module_B/module_B.h
src/module_B/module_A/module_A.c
src/module_B/module_A/module_A.h
src/module_C/module_C.c
src/module_C/module_C.h
src/module_C/module_A/module_A.c
src/module_C/module_A/module_A.h
编译器检测到函数的重复定义并停止编译并出现错误。
我们使用 Eclipse 进行开发。
问题1.如何解决这样的问题?
问题2.如果我们深入研究这个话题,我们可能会想象模块A有多个修订版,模块B和C指向模块A的不同修订版。如何解决这个问题?