Kommentieren einer absichtlichen Endlosschleife, um „-fanalyzer“ zu erfüllenC++

Programme in C++. Entwicklerforum
Anonymous
 Kommentieren einer absichtlichen Endlosschleife, um „-fanalyzer“ zu erfüllen

Post by Anonymous »

Ich habe den folgenden Fall zur Optimierung eingebetteter Systeme (vereinfacht).

Code: Select all

int main() {
while (1) {
// Do something
if (unrecoverable_error) {
__breakpoint();
while(1);
}
}
}
Wenn die while (1);-Anweisung durch return 0 ersetzt wird, ruft der Compiler alle Destruktoren auf, die beim Beenden von main fällig sind (und erzeugt in diesem Zusammenhang die Destruktorcodeaufblähung) – sowohl für main-local als auch für global, auch wenn crt0 letztendlich doch die CPU in einer while(1);-Schleife abfängt.
Daher besteht ein Vorteil Verwenden Sie while(1); mit Bedacht, wenn das System absichtlich hängen bleiben soll.
Die statische Analyse des Codes mit -fanalyzer führt zu (offensichtlichen) Endlosschleifenfehlern/-warnungen.
Wie kann man annotieren, dass eine bestimmte Instanz der Endlosschleife tatsächlich beabsichtigt ist?
Ich möchte die Endlosschleifenerkennung nicht vollständig deaktivieren (da es möglich ist, dass andere Teile des Codes Folgendes enthalten). Fehler, die zu nicht-trivialen Endlosschleifen führen).

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post