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