gpt4 book ai didi

c++ - 关闭调试,NDEBUG

转载 作者:太空狗 更新时间:2023-10-29 19:53:37 29 4
gpt4 key购买 nike

C++ Primer 说

The behavior of assert depends on the status of a preprocessor variable named NDEBUG. We can "turn off" debugging by providing a #define to define NDEBUG

我希望在提供 define 时不会执行断言。

#define NDEBUG TRUE

int main (int argc, char const *argv[])
{
assert(argc==0); // checked

return 0;
}

在这个例子中,为什么在定义了 NDEBUG 时检查了 assert 语句? (如果我错了请纠正我,但它的定义并不重要,对吧?)

当从命令行执行时,使用 -DNDEBUG 标志,一切都按预期工作(assert 未执行)

最佳答案

NDEBUG只影响 assert如果您在包含 <cassert> 之前定义它(或 <assert.h> ;请注意,您可以多次包含这些 header ,从而根据 assert 更改 NDEBUG 的行为)。

您不需要将其定义为任何特定值,或根本不需要任何值:

// this is OK
#define NDEBUG

关于c++ - 关闭调试,NDEBUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237818/

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