gpt4 book ai didi

c++ - 有没有跨平台的方法来检测 Debug模式编译?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:15 25 4
gpt4 key购买 nike

是否有跨平台的方法来检测 Debug模式编译?如果没有,那么顶级编译器如何做; MSVC、GNU 和 MINGW、mac、clang、intel。

例如 MSVC,您可以像下面这样检测 Debug模式。

#if defined _DEBUG
// debug related stuff here
#else
// release related stuff here
#endif

最佳答案

对于许多或大多数编译器来说,“调试”模式是一个多方面的概念,包括几个正交设置。例如,对于 gcc,您可以使用 -g 将调试符号添加到输出代码,使用 -O 启用优化,或禁用 assert() 宏使用 -DNDEBUG(定义 NDEBUG 宏)。在我的工作中,我们已经部署了启用或禁用这些功能的许多组合的生产代码。我们保留了 -g 以便附加到正在运行的进程并使用 gdb 对其进行故障排除(在这种情况下我们通常不得不与意大利面条 -O produced),保留断言以获取有关跨版本持续性错误的更多信息,并禁用对根据更宽松的“未定义行为”解释编写的遗留代码库的优化(直到我们可以修复/替换它)。

由于 NDEBUG 宏实际上会影响生成代码的语义(并且某些库会在定义或未定义宏时更改其 ABI),这可能是对您的问题最便携的答案。但是,如果您使用该宏来检测可移植的优化构建,您可能会取得不同程度的成功。

关于c++ - 有没有跨平台的方法来检测 Debug模式编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17508954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com