2012-06-07 84 views
0

我试图使用开源的VC++代码。 我想将一个新项目添加到现有的VC++解决方案中,这个解决方案变成了一场噩梦。 我面临的其中一个问题是修复“类型重定义”错误,我已经修复了一些错误,但现在我陷入了其他一些错误。代码库很大,所以没有snippests ...如何处理“类类型重定义”

我的问题是,是否有任何“最佳实践”来追查这些错误?

谢谢。

+2

尝试#pragma一次。 – ervinbosenbacher

回答

2

通过类型重定义,我假设在您的工作区项目中定义了相同的名称class es或typedef,并且它们在编译时导致问题(不会与多个定义链接器错误混淆)。

最好的做法是始终将它们放在模块或项目库中的namespace
例如

// project1.h 
namespace project1 { 
    class X {}; 
} 

// project2.h 
namespace project2 { 
    class X {}; 
} 
+0

10x,请参阅我对@sharptooth的评论。 “包含”代码不是我的,所以我不能添加命名空间。我只是在寻找一种方法来追踪重新定义。 –

1

我的建议是将单独项目中的所有代码放在单独的名称空间中。那么你不必担心冲突。如果你有很多头文件和源文件,这可能是很多工作,但从长远来看它可能是值得的。

而且您不必将名称空间添加到所有函数/类,只需在所有头文件/源文件的顶部添加namespace foo {,并在底部添加}

+0

10x。请看我对@sharptooth的评论 –

0

当您尝试在两个或多个不同的程序中包含相同的头文件时,如 调用B和B调用C,并且如果在A和B中都包含C,则会发生此类错误。同样的事情发生在我身上,并解决了它。