gpt4 book ai didi

c++ - 断言、-NDEBUG 和段错误

转载 作者:太空狗 更新时间:2023-10-29 20:17:31 30 4
gpt4 key购买 nike

我有相当大的一段代码,在开发版本中运行良好,代码中有许多 assert()。我使用传递给 g++ 的 -DNDEBUG 指令禁用了断言,现在我的代码因 seg 而中断。过错。关于 assert() 有什么我不知道的吗?

最佳答案

据我所知,断言最常见的问题是断言本身的代码具有副作用。当您使用 -DNDEBUG 进行编译时,断言基本上被注释掉了,因此断言中的代码不会被执行。断言手册页在错误部分提到了这一点:

BUGS
assert() is implemented as a macro; if the expression tested has side-
effects, program behavior will be different depending on whether NDEBUG
is defined. This may create Heisenbugs which go away when debugging is
turned on.

关于c++ - 断言、-NDEBUG 和段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492668/

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