エラーメッセージを出力して終了する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;
}
*barNULL であるとその行が実行されなくなりますが、null ポインターを逆参照している可能性があることを警告しbarます。dieParasoft が認識できる方法で非リターンとしてマークする方法はありますか?
編集:GCCとVS 2003の両方で機能するものが必要ですが#ifdef、誰かがVSでのみ機能するソリューションを持っている場合、私は物事を回避する方法を超えていません