我正在尝试使用开源VC ++代码。 我正在尝试将一个新项目添加到现有的VC ++解决方案中,这个解决方案变成了一场噩梦。 我面临的一个问题是修复“类型重新定义”错误,我已经解决了一些问题,但现在我已经遇到了其他问题。代码库是巨大的,所以没有snippests ...
我的问题是,是否有任何“最佳做法”来追踪这些错误?
感谢。
答案 0 :(得分:2)
通过类型重定义,我假设在工作空间项目中定义了相同名称class
es或typedef
,并且它们在编译时导致问题(不要混淆多个定义链接器错误)。
最佳做法是始终将它们包含在模块或项目基础上的 namespace
。
e.g。
// project1.h
namespace project1 {
class X {};
}
// project2.h
namespace project2 {
class X {};
}
答案 1 :(得分:1)
我的建议是将所有代码放在单独的名称空间中的单独项目中。那你就不用担心冲突了。如果你有很多头文件和源文件可能会有很多工作,但从长远来看它可能是值得的。
并且您不必将命名空间添加到所有函数/类,只需在所有标头/源文件的顶部添加namespace foo {
,在底部添加相应的}
。
答案 2 :(得分:0)
当您尝试在两个或多个不同的程序中包含相同的头文件时,例如 调用B和B调用C,如果在A和B中都包含C,则会发生这种错误。同样的事发生在我身上,并解决了它。