【发布时间】:2014-12-11 14:26:57
【问题描述】:
我需要链接 2 个库。第一个库需要一个头文件,其中:
typedef int TYPE
第二个库需要一个头文件,其中:
typedef struct type TYPE
显然将它们链接会导致违反单一定义规则 (ODR)。这里明显的解决方案是重命名其中一种类型。但是,这也需要我在数百个文件中进行更改,我试图避免这种情况,因为它会使我们所有的项目不一致。 有没有其他方法可以解决这个问题?
【问题讨论】:
-
更改所有文件会导致项目不一致?
-
@mafso 例如,project1 使用关键字 TYPE,而这个项目将使用 _TYPE,尽管它们都是相同类型的别名
-
仅当您不更改数百个文件时。我不确定你想要什么。要么在整个项目中一致地调用相同的类型(这意味着在您的情况下进行重构),要么您只希望使用
TYPEs 的文件中的不同标识符(这意味着您可以保持数百个文件不变,但使项目不一致)。
标签: c typedef one-definition-rule