关闭调试,NDEBUG
Turning off debugging, NDEBUG
C++Primer说
assert的行为取决于名为NDEBUG的预处理器变量的状态。我们可以通过提供
#define
来定义NDEBUG
我希望在提供define时,断言不会被执行。
#define NDEBUG TRUE
int main (int argc, char const *argv[])
{
assert(argc==0); // checked
return 0;
}
在本例中,当定义了NDEBUG
时,为什么要检查assert
语句?(如果我错了,请纠正我,但这与它的定义无关,对吧?)
从命令行执行时,使用-DNDEBUG
标志,所有工作均按预期进行(未执行assert
)
NDEBUG
仅在包含<cassert>
(或<assert.h>
;请注意,您可以多次包含这些标头,从而根据NDEBUG
更改assert
的行为)之前定义assert
。
你不需要把它定义为任何特定的值,或者任何值:
// this is OK
#define NDEBUG
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 在linux上调试巨大的C++项目
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 正在VS调试器中监视映射条目
- 使用调试/崩溃报告将应用程序部署到客户端
- VC++本机单元测试,找不到调试符号
- 如何在C++生成器中禁用"使用调试.dcus"
- 使用vscode调试时,GDB意外退出
- 即使使用调试编译标志,表达式也是"optimized out"
- 调试 CUDA MMU 故障
- 小字符串优化(调试与发布模式)
- 调试和自由执行中的信号处理
- 调试编译的服务器在数据库打开时崩溃
- Visual Studio 调试优化如何工作?
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 如何在大型c++项目的可视化代码中设置调试
- Qt 调试显示行号
- 关闭调试,NDEBUG