g++: Einzelne Funktion NICHT optimieren
-
Hallo!
Ich hab da eine Funktion, die soll, egal wie die globalen Einstellungen sind, nicht optimiert werden. Für die Interessierten: Ist eine Busy-Waiting-Routine auf einem Mikrocontroller.
Aus der Doku werde ich nicht schlau, wäre das so korrekt? Compiler ist der g++
#pragma optimize=O0 void block(unsigned int ms) { // [...] }
Bezieht sich das dann auch nur auf die Funktion, oder auf alles was noch danach in der Datei kommt?
-
Was du suchst, ist
volatile
. IMHO reicht es, das wieconst
hinter die Funktion zu schreiben.
-
Volatile heisst nicht umsonst "flüchtig". Damit sind Variablen nicht schreibgeschützt und müssen immer wieder vor der Weiterverarbeitung gelesen werden.
Die Pragma-Anweisung ist schon besser.
Gruß
-
fissoffo schrieb:
Was du suchst, ist
volatile
. IMHO reicht es, das wieconst
hinter die Funktion zu schreiben.Modifier sind nur bei Member-Funktionen erlaubt. Ein Pragma wäre hier definitiv besser, wenn auch man denselben Effekt wohl mit volatilen Feldern erzeugen könnte.