Ab wann existiert ein Variablenname?



  • Hallo,

    da ich hier im Forum eine Selbstinitialisierung gesehen habe, hab ich mich gefragt, ob folgender Code legal ist:

    static int foo = foo;
    
    int main()
    {
    }
    

    Es geht also darum, ob der Name "foo" auf der rechten Seite des Gleichheitszeichens schon bekannt ist. VS 2008 und Comeau schlucken den Code ohne zu murren. Sagt der Standard was dazu?

    MfG

    Michael E.

    Edit: Ein bisschen Googlen hätte schon geholfen: Laut C++ Gotchas liegt der Variablenname schon im Scope, bevor die rechte Seite der Zuweisung ausgewertet wird. Spricht dann noch was gegen die Validität?



  • WO wird dieser Code eigentlich ausgeführt? Einfach bevor main() aufgerufen wird?



  • Ich bin mal gespannt was der wert von foo ist...



  • lk schrieb:

    Ich bin mal gespannt was der wert von foo ist...

    Ich tippe auf 0, da statische Variablen vermutlich im .bss Segment landen.



  • aber wenn foo sich die ganze zeit selber zuweist... sollte das jemals ein ende nehmen ?



  • lk schrieb:

    aber wenn foo sich die ganze zeit selber zuweist... sollte das jemals ein ende nehmen ?

    Es ist ja keine Schleife. Mit der Gültigkeit von foo steht auch der Wert fest, welcher 0 ist. Also weißt sich foo 0 zu.



  • Es könnte eigentlich ein rekursiver aufruf sein, denn "=" ist eigentlich ein operator und somit ein aufruf. wenn sich nun etwas zuweisen will...
    Ne hast recht, wird nur einmal aufgerufen, da foo an sich keine funktion aufruft um den wert zu kriegen... Und klassen.... ?


Anmelden zum Antworten