在C ++中,大多数lib都是Debug / Release版本。 问题1.调试版和发布版之间有什么大的区别(例如,使用一个版本与另一个版本有什么优势)。
问题2. lib只是有一个函数的实现,如果你使用调试/发布版本,函数实现如何改变?
问题3.您是否可以在调试模式下构建应用程序并使用lib的发行版?
感谢。
答案 0 :(得分:3)
#ifdef DEBUG
块中的代码答案 1 :(得分:1)
调试版本通常只需很少的优化即可构建 - 因此当您在带有源代码的调试器中逐步执行调试版本时,源代码行与之前的内容之间存在良好的映射关系。该程序。当您逐步完成高度优化的代码时,它不会很好地映射到源代码,并且更难调试。
此外,每当有人使用#ifdef DEBUG
或同等版本时,该版本的代码(当然)都没有。这可能是额外的错误检查,记录,断言等。
通常,函数的接口在调试和发布之间不应该有所不同,因此您可以正常链接调试和发布,而不会有太多麻烦。
但是,有些情况(特别是在Windows上)由于内置于某些库中的DLL加载而变得非常困难。有些人可能会尝试加载DLL的调试版本,有些人可能想要发布。这些都不能加载到同一个过程中。