首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭调试,NDEBUG

关闭调试,NDEBUG
EN

Stack Overflow用户
提问于 2012-09-02 16:40:12
回答 1查看 3.4K关注 0票数 3

C++ Primer说

断言的行为取决于名为NDEBUG的预处理器变量的状态。我们可以通过提供一个#define来定义NDEBUG来“关闭”调试。

我的期望是,当提供定义时,断言不会被执行。

代码语言:javascript
复制
#define NDEBUG TRUE

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

    return 0;
}

在本例中,为什么在定义assert语句时检查NDEBUG语句?(如果我错了,请纠正我,但这与它的定义无关,对吗?)

当使用-DNDEBUG标志从命令行执行时,所有操作都按预期工作(不执行assert)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-02 16:41:33

只有在包含NDEBUG之前定义assert (或<assert.h>;请注意,您可以多次包含这些标头,根据NDEBUG更改assert的行为),才会影响assert

您不需要将其定义为任何特定值,也不需要定义任何值:

代码语言:javascript
复制
// this is OK
#define NDEBUG
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12237818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档