- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想实现这个行为:
assert_robust(expression, commands)
的工作方式与经典的 assert(expression)
完全相同assert_robust(expression, commands)
执行一些commands
这可以通过这种方式完成:
#ifdef NDEBUG
#define assert_robust(expression, command) if (!(expression)) command;
#else
#define assert_robust(expression, command) assert(expression);
#endif
例如,这可以用来使 myfunction
容错:
char myfunction(const string& s, int i)
{
assert_robust(i >= 0, return '\0');
/* Normal code */
}
这很好用,但是如何使宏 assert_robust
支持多个(任意)命令? (最好通过标准的 C++ 方式)
另一个问题是:
debug严格,release仁慈是好事吗?
编辑:我的想法是,为什么要做这样的事情是因为如果它是程序中的错误实际上要好得多,程序有时会维护一些奇怪的东西,而不是当它崩溃并且用户失去他们的时候数据。
最佳答案
比较有意思的是第二个问题:
Is it good thing to be strict in debug and benevolent in release?
我的经验是,在调试和发布版本中有不同的行为是一个可怕的想法。您正在注册生产中的问题,您将永远无法在调试版本中重现,因为两者的行为不同。
除此之外,如果您首先在 Debug模式下断言,您可能会声称这不会成为问题,断言应该用于标记编程问题,即您无法安全恢复的情况。如果您可以在 Release模式下安全地恢复,为什么要在 DEBUG 中断言?如果不能,您是否愿意以一种您不太了解它会做什么的方式摆弄生产数据?
关于c++ - 如何做出健壮的断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974645/
我正在寻找一种解决方案来透明地保留 Perl 数据结构(甚至不是对象,但对象支持将是一个加号)而无需循环引用。我不太关心后端,但我更喜欢 JSON。对象的数量会相对较少(几千个 hashref,每个都
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在我的办公室,我们正在使用 (https://docs.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=netframe
我是一名优秀的程序员,十分优秀!