Union über static-Variablen in Funktionen



  • Hallo!
    Och suche eine Möglichkeit, dem Compiler zu sagen, dass er 2 Variablen desselben Typs, die in verschiedenen Funktionen als static deklariert sind, als union behandeln soll, d.h. dass sie nicht lgiehczeitig verwendet werden.
    Gibt es außer der folgenden Möglichkeit mit einer globalen Variablen noch weitere?
    (globale Variablen sind m.E. schwer zu verwalten)

    typedef ... mytype;
    static mytype var;
    void fA()
    {
      var.set...;
      var.doSthA();
    }
    
    void fB()
    {
      var.set...;
      var.doSthB();
    }
    

    Die Variable wird vor der Benutzung in einer Funktion immer neu initialisiert, also werden die Werte aus dem letzten Aufruf nicht benötigt.

    Danke, Golem



  • Golem86 schrieb:

    Die Variable wird vor der Benutzung in einer Funktion immer neu initialisiert, also werden die Werte aus dem letzten Aufruf nicht benötigt.

    Und weshalb nimmst du dann keine lokalen Stackvariablen?



  • Danke erstmal für deine schnelle Antwort.
    Der Typ der Variablen frisst evtl. (Template) sehr viel Speicher. Die Alloziierung könnte deshalb vergleichsweise lange dauern.
    Die Funktionen werden teilweise innerhalb eines inner loops aufgerufen (mehrere 100000 Iterationen). Jedesmal die Struktur neu zu alloziieren etc. würde einfach zu viel Zeit verbrauchen.

    mfg, Golem



  • Und die Variable als Argument an die Funktionen zu übergeben kommt auch nicht in Frage?



  • Das ist die Lösung! (mit einer Referenz bzw. Pointer)
    -- Vielen Dank

    mfg, Golem


Log in to reply