Аннотирование намеренного бесконечного цикла для удовлетворения "-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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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