Wie in diese Frage besprochen, optimiert C ++ 11 Endlosschleifen weg.
Aber bei Embedded Devices, die nur einen Zweck haben, sind Endlosschleifen sinnvoll und werden oft verwendet. Sogar ein vollständig leeres while(1);
ist nützlich für einen Watchdog-unterstützten Reset. Beenden, aber leere Schleifen können auch in der eingebetteten Entwicklung nützlich sein.
Gibt es eine elegante Möglichkeit, den Compiler ausdrücklich anzuweisen, keine leeren oder Endlosschleifen zu entfernen, ohne die Optimierung vollständig zu deaktivieren?
Eine der Voraussetzungen für das Entfernen einer Schleife (wie in dieser Frage erwähnt) ist, dass sie
ist
- greift nicht auf flüchtige Objekte zu oder ändert sie nicht
Also,
%Vor%sollte den Trick machen, obwohl ich das sicherlich überprüfen würde, indem ich mir die Zerlegung eines Programms ansehe, das mit Ihrer speziellen Toolchain erstellt wurde.
Eine solche Funktion wäre ein guter Kandidat für GCCs noreturn
Attribut ebenfalls.