libstdc++ - 为什么不能交替使用 lib 的调试/发布版本

标签 libstdc++

在 C++ 中,大多数库都在调试/发布版本中。
问题 1. Debug 版本和 Release 版本之间的最大区别是什么(例如,您使用一个版本与另一个版本相比有什么优势)。

问题 2. 一个 lib 只是有函数的实现,如果您使用调试/发布版本,函数实现会如何变化?

问题 3. 你能在 Debug模式下构建你的应用程序并使用 lib 的发布版本吗?

谢谢。

最佳答案

答案 1

Debug模式

  • 包含用于调试的符号。换句话说,您的调试器可以链接程序的当前位置,它在源代码中的位置
  • 可能包含仅用于调试的代码,例如 #ifdef DEBUG 中的代码区块

  • Release模式
  • 更快,因为它已删除调试相关代码。
  • 调试受限,因为它缺少符号。


  • 答案 2
  • 取决于库的实现方式


  • 答案 3
  • 仅当它们具有相同的 ABI .
  • 关于libstdc++ - 为什么不能交替使用 lib 的调试/发布版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532333/

    相关文章:

    c++ - 在 Xcode 4.5 中, "Compiler Default"和 "C++ Standard Library"的 "C++ Language Dialect"是什么?

    xcode - 在直接 Objective-C 目标中使用 Objective-C++ 静态库

    c++ - 我需要将 std::move 移植到我的内核吗?

    python - 找不到 GLIBCXX_3.4.29

    c++ - std::unordered_map 的桶数意外增长

    c++ - 在 std::Optional 的 noexcept 说明符中引用initializer_list

    c++ - g++ 中的 SGI STL 绳索?

    c++ std::bad_alloc on std::filesystem::path 追加

    c++ - 为什么GCC的ifstream >> double分配了这么多的内存?

    c++ - 为什么从管道读取时 libc++ getline 会阻塞,而 libstdc++ getline 不会?