Scope Operator {}



  • Hab folgende Syntax mit Gcc und TinyC und CC65 getested und gibt kein Error:

    void main(void)
    {
    	int b;
    	b=1;
    	{int a;
    	 a=0;}
    }
    

    Erstaunlich, oder? Alle Compiler sind im C Modus und nicht im C++ Modus. Ich dachte man könnte nur in c++ Variablen "on the fly" definieren.



  • Es ist ja nicht "on the fly", es ist ja in einem neuen scope.
    Innerhalb einer if-Abfrage kannst du ja auch in C Variablen definieren.



  • Zum einen das, zum anderen kann C auch seit 14 Jahren Variablen "on the fly" definieren.



  • D.h. dann wohl auch in einer for oder while Schleife, wäre sonst ja inkonsequent.
    😃



  • Gibt es Anwendungen dafür, einfach nur {} zu verwenden, unabhängig von einer for, while schleife oder if abfrage?



  • Ja.

    IrgendeineStruct result;
    {
        SehrGroßesObjektWasAufDemStackLiegt objekt;
        result = TueIrgendEtwasMitObjekt(objekt);
    }
    MacheSehrVielMitResultHier(result);
    MacheNochMehrHier(result);
    UndNochMehr(result);
    

    So liegt objekt nicht so lange auf dem Stack, weil es bei der schließenden Klammer zerstört wird.



  • MC schrieb:

    Hab folgende Syntax mit Gcc und TinyC und CC65 getested und gibt kein Error:

    void main(void)
    {
    	int b;
    	b=1;
    	{int a;
    	 a=0;}
    }
    

    Wundert mich auch, hätte schon gedacht, dass void main dir um die Ohren fliegt. :p


Log in to reply