断言中的表达式不应恒为真
10.8.1 ID_badAssertion
恒为真的断言是没有意义的。
示例:
void foo(int a[]) {
assert(sizeof(a)); // Non-compliant
assert("some comments"); // Non-compliant
}
也不建议使用恒为假的断言表示异常,在 C++ 代码中应改用异常处理的方式。
void bar(int x) {
if (x < 0) {
assert(0); // Bad, use exceptions instead
}
}
依据
ISO/IEC 9899:1999 7.2
ISO/IEC 9899:2011 7.2