我试图使用开源的VC++代码。 我想将一个新项目添加到现有的VC++解决方案中,这个解决方案变成了一场噩梦。 我面临的其中一个问题是修复“类型重定义”错误,我已经修复了一些错误,但现在我陷入了其他一些错误。代码库很大,所以没有snippests ...如何处理“类类型重定义”
我的问题是,是否有任何“最佳实践”来追查这些错误?
谢谢。
我试图使用开源的VC++代码。 我想将一个新项目添加到现有的VC++解决方案中,这个解决方案变成了一场噩梦。 我面临的其中一个问题是修复“类型重定义”错误,我已经修复了一些错误,但现在我陷入了其他一些错误。代码库很大,所以没有snippests ...如何处理“类类型重定义”
我的问题是,是否有任何“最佳实践”来追查这些错误?
谢谢。
通过类型重定义,我假设在您的工作区项目中定义了相同的名称class
es或typedef
,并且它们在编译时导致问题(不会与多个定义链接器错误混淆)。
最好的做法是始终将它们放在模块或项目库中的namespace
。
例如
// project1.h
namespace project1 {
class X {};
}
// project2.h
namespace project2 {
class X {};
}
10x,请参阅我对@sharptooth的评论。 “包含”代码不是我的,所以我不能添加命名空间。我只是在寻找一种方法来追踪重新定义。 –
我的建议是将单独项目中的所有代码放在单独的名称空间中。那么你不必担心冲突。如果你有很多头文件和源文件,这可能是很多工作,但从长远来看它可能是值得的。
而且您不必将名称空间添加到所有函数/类,只需在所有头文件/源文件的顶部添加namespace foo {
,并在底部添加}
。
10x。请看我对@sharptooth的评论 –
当您尝试在两个或多个不同的程序中包含相同的头文件时,如 调用B和B调用C,并且如果在A和B中都包含C,则会发生此类错误。同样的事情发生在我身上,并解决了它。
尝试#pragma一次。 – ervinbosenbacher