首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何完全禁用对assert()的调用?

如何完全禁用对assert()的调用?
EN

Stack Overflow用户
提问于 2011-03-18 23:36:29
回答 3查看 66.2K关注 0票数 86

我的代码充满了对assert(condition)的调用。在调试版本中,我使用g++ -g来触发我的断言。出乎意料的是,在我的发布版本中也触发了相同的断言,即没有-g选项编译的版本。

如何在编译时完全禁用断言?我是否应该在我生成的任何构建中显式地定义NDEBUG,而不管它们是调试、发布还是其他任何东西?

EN

回答 3

Stack Overflow用户

发布于 2011-03-18 23:40:51

-g标志不会影响assert的操作,它只是确保各种调试符号可用。

设置NDEBUG是禁用断言的标准方式(就像在官方的ISO标准中一样)。

票数 12
EN

Stack Overflow用户

发布于 2011-03-18 23:39:09

您可以通过以下方式完全禁用断言

代码语言:javascript
复制
#define NDEBUG
#include <assert.h>

或者,您可以在makefile/build过程中设置NDEBUG (通过-DNDEBUG),这取决于您想要的是生产力版本还是开发版本。

票数 11
EN

Stack Overflow用户

发布于 2011-03-18 23:39:20

可以,使用预处理器/编译器选项-DNDEBUG在命令行/构建系统上定义NDEBUG

这与-g插入的调试信息无关。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5354314

复制
相关文章

相似问题

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