Аннотирование намеренного бесконечного цикла для удовлетворения "-fanalyzer"C++

Программы на C++. Форум разработчиков
Anonymous
Аннотирование намеренного бесконечного цикла для удовлетворения "-fanalyzer"

Сообщение Anonymous »

У меня есть следующий пример оптимизации встроенной системы (упрощенный).

Код: Выделить всё

int main() {
while (1) {
// Do something
if (unrecoverable_error) {
__breakpoint();
while(1);
}
}
}
Если оператор while (1); заменяется на return 0, компилятор вызывает все деструкторы, необходимые при выходе из основного (и, если уж на то пошло, генерирует раздувание кода деструктора) - как для основного локального, так и для глобального, даже если crt0 в конечном итоге захватывает ЦП в цикле while(1);.
Таким образом, есть преимущество разумно используйте while(1);, если вы хотите, чтобы система намеренно зависала.
Статический анализ кода с помощью -fanalyzer приводит к (очевидной) ошибке/предупреждению о бесконечном цикле.
Как можно отметить, что конкретный экземпляр бесконечного цикла действительно является преднамеренным?
Я не хочу полностью отключать обнаружение бесконечного цикла (поскольку возможно, что другие части кода могут содержать ошибки, приводящие к нетривиальным бесконечным циклам).

Подробнее здесь: https://stackoverflow.com/questions/795 ... -fanalyzer

Вернуться в «C++»