gpt4 book ai didi

c - assert == 中的函数调用不好吗?

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

我刚刚在我们正在使用的一些代码中发现了一个错误*,由于以下情况而失败:

Assert(SomeVitalFunction(foo) == OK)

在 DEBUG 宏被 #defined 的时候这一切都很好:

#ifdef DEBUG
#define Assert(x) if((x) == 0){/*some error handling*/}
#else
#define Assert(x)
#endif

但是当我们#undef'd DEBUG时,它具有从代码中删除重要函数调用的效果。

我终其一生都无法弄清楚它如何与 DEBUG #undef'd 一起工作,而且将任何类型的函数调用放在断言中似乎不是一个好主意像这样。

我错过了什么吗?

* = 编辑以澄清以下 Carpetsmoker 的评论:代码来自一个特别落后的 Elbonian 代码奴隶 cabal ,我们的任务是破解、削减、刮 mustache 、抛光、 sanitizer 和涂口红

最佳答案

您没有遗漏任何东西。

断言应该始终写得好像它们可以在编译器开关轻弹时消失。

可以在断言中调用需要相对较长时间才能完成的函数(例如分析数据结构的完整性),因为函数调用不会出现在发布版本中。不利的一面是您无法调用正确操作所必需的函数。

关于c - assert == 中的函数调用不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27272617/

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