gpt4 book ai didi

c++ - NDEBUG 预处理器宏用于(在不同平台上)是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:33:25 34 4
gpt4 key购买 nike

我对各种平台/编译器(“实现”)/框架分配给 C 和 C++ 预处理器宏 NDEBUG 的用途感兴趣。

C和C++标准只提到过一次这个定义,即控制assert()宏的行为。

我会要求只包含具体的答案,您知道 C 或 C++ 的某个平台/框架/库使用 NDEBUG 定义启用或禁用任何其他除了标准定义的assert()

提出这个问题的一个原因是 MS(Visual-C++)总是(?)使用“他们的”_DEBUG定义来区分调试和发布的东西,我想知道这是否是库/平台拥有“自己的”调试定义的常见做法,或者其他库/平台是否使用 NDEBUG 进行与调试相关的东西。

最佳答案

关于 NDEBUG 的唯一“标准”内容是用来控制assert宏将扩展为执行检查或不执行检查的内容。 MSVC 通过在项目中为您定义此宏,有助于在发布构建配置中定义此宏。您可以通过编辑项目配置来手动更改它。其他工具链可能(也可能不会)做类似的事情。

请注意,您还可以更改 NDEBUG 的状态使用 #define 的翻译单元(源文件)中的宏和/或 #undefNDEBUG并重新包含 assert.h更改 assert 的方式宏的行为(打开和关闭它)。该行为是标准规定的,并且是唯一一次(我认为)该标准允许第二次包含标准 header 以在第二次包含后更改编译行为。

关于c++ - NDEBUG 预处理器宏用于(在不同平台上)是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473556/

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