我们有一个die
输出错误信息并退出的函数,例如:
void die(const char* msg) {
fprintf(stderr, "Error: %s\n", msg);
exit(1);
}
我们使用Parasoft C++test来静态分析我们的代码,但它没有意识到这die
是一个非返回函数。所以当它看到如下代码时:
void foo(Bar* bar) {
if(!bar) {
die("bar is NULL");
}
Bar bar2 = *bar;
}
它警告*bar
可能会取消引用空指针,即使bar
为 NULL 会阻止该行执行。有没有办法以die
Parasoft 识别的方式标记为不返回?
编辑:我需要在 GCC 和 VS 2003 中都可以使用的东西,但是#ifdef
如果有人有一个只能在 VS 中使用的解决方案,我不会放弃解决问题的方法