У нас есть функция die
, которая выводит сообщение об ошибке и завершает работу, например ::10000
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