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 wie const 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 wie const 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.


Anmelden zum Antworten