0

我正在尝试使用开源 VC++ 代码。我正在尝试将一个新项目添加到现有的 VC++ 解决方案中,这变成了一场噩梦。我面临的问题之一是修复“类型重新定义”错误,我已经修复了一些,但现在我被其他一些错误所困扰。代码库很大,所以没有摘要......

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

谢谢。

4

3 回答 3

2

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

最佳实践是始终将它们包含namespace在模块或项目库中。
例如

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

// project2.h
namespace project2 {
  class X {};
}
于 2012-06-07T05:53:57.180 回答
1

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

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

于 2012-06-07T05:56:48.157 回答
0

当你试图在两个或多个不同的程序中包含同一个头文件时,比如 A 调用 B 和 B 调用 C,如果你在 A 和 B 中都包含 C,就会出现这种错误。我也发生了同样的事情,并解决了它。

于 2013-01-15T17:25:37.670 回答