Folgendes nachmachen
-
gewünschte verhalten wäre entweder compilier error oder wenn es läuft soll es automatisch 0 ausgegeben werden.
bei mir no crash
-
Du kannst C++ nicht so modifizieren, dass sich Zeiger automatisch mit 0 initialisieren, wenn du bei der Syntax bleiben willst.
Aber mal abgesehen davon: Hat das Problem irgendeine praktische Relevanz?
-
Nexus schrieb:
Du kannst C++ nicht so modifizieren, dass sich Zeiger automatisch mit 0 initialisieren, wenn du bei der Syntax bleiben willst.
Aber mal abgesehen davon: Hat das Problem irgendeine praktische Relevanz?
nicht wirklich, ich staune nur, wie das porblem bei std::string gelöst wurde.
-
JnZn558 schrieb:
Oben genannte code is zwar Unsinn, aber es lässt fehlerlos compilieren und ausführen.
Da gibt es nichts zu staunen. Der Code lässt sich nicht problemlos ausführen. Dein Zeiger ist nicht initialisiert, da kann alles passieren.
Übrigens: Eine Warnung müsstest du aber bekommen, oder? Welcher Compiler?
-
Mit Gcc-4.1.2 bekomme ich keine Warnung! TROTZ -Wall
-
Wie sieht es mit
-Wextra
aus?
-
Rofli schrieb:
Mit Gcc-4.1.2 bekomme ich keine Warnung! TROTZ -Wall
Ich mit -Wall:
gcc-Version 4.4.0 20090526 (prerelease) (GCC) schrieb:
stringerror.cpp: In function »int main()«:
stringerror.cpp:5: Warnung: »str« is used uninitialized in this function
-
Also
-Wuninitialized -Winit-selfund es MÜSSTE auch bei Rofli auftauchen, sonst ist irgendetwas verkehrt.
-
Visual Studio 200000000000000000000000000000000000008
warning level standard = 3
-
g++ -O -Wall -Wuninitialized -Winit-self test.cpp -o test
Nur so bekomme ich den Fehler. Warum reicht -Wall nicht???!

-
Rofli schrieb:
Warum reicht -Wall nicht???!

Durch -Wall werden sowieso nicht alle Warnungen eingeschaltet, auch wenn man es sich intuitiv so denken würde.
Und diese komische Initialisierung ist noch ein Fall für sich. Dafür gibt es halt diesen init-self Schalter (siehe gcc Doku).
JnZn558 schrieb:
Visual Studio 200000000000000000000000000000000000008
warning level standard = 3Oh, eine Version aus ferner, ferner Zukunkft. Damit kenne ich mich leider nicht aus. Bei mir reicht Level 3 und, wie Loli schon schreibt, hat die Warnung die Nummer C4700. Tipp das in die Hilfe ein und der nötige Warning-Level wird dir offenbart.
Blockst du die Warnungen vielleicht irgendwo anders?
Aber, ich denke die Ausgangsfrage ist beantwortet?