assert里面的函数调用==坏?
发布时间:2020-12-16 03:35:48 所属栏目:百科 来源:网络整理
导读:我刚刚在我们正在处理的一些代码中挖出了一个错误*由于以下情况而失败: Assert(SomeVitalFunction(foo) == OK) DEBUG宏#defined一直都很好用: #ifdef DEBUG #define Assert(x) if((x) == 0){/*some error handling*/}#else #define Assert(x)#endif 但是当
我刚刚在我们正在处理的一些代码中挖出了一个错误*由于以下情况而失败:
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代码奴隶的阴谋,我们的任务是破解,削减,刮胡子,擦亮,消毒和涂抹口红. 解决方法
你没有错过什么.
始终应该写入断言,好像它们可以在编译器开关的轻弹中消失. 您可以调用在断言内完成相对较长时间的函数(例如,分析数据结构的完整性),因为函数调用不会出现在发布版本中.另一方面,您无法调用正确操作所需的功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |