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