gpt4 book ai didi

c++ - 方便的断言检查策略

转载 作者:行者123 更新时间:2023-11-30 03:12:10 25 4
gpt4 key购买 nike

有些断言代价高昂,有些断言最好在生产代码中关闭。至少不清楚断言是否应该始终启用。

在我的应用程序中,我希望能够在每个文件或每个类的基础上打开/关闭部分断言。

如何在 C++ 中实现?

最佳答案

为了在模块范围内停用断言,我会使用:

#if defined(assert)
# undef assert
# define assert(x) ((void)0)
#endif

...当然,如果您可以使用自定义宏,这可以简化。

#if defined(_NO_ASSERTS)
# define myAssert(x) ((void)0)
#else
# define myAssert(x) assert(x)
#endif

对于类范围的停用,我将使用静态常量类成员或类范围的枚举与自定义宏相结合:

#define myAssert(x) do { if(_CLASS_ASSERT) { assert(x); } } while(0)

class AssertOff
{
enum { _CLASS_ASSERT = 0 }
}

使用枚举和静态常量 bool 值,所有现代编译器都应该优化掉 if(_CLASS_ASSERT) {}

关于c++ - 方便的断言检查策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1448601/

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