Ungarische Notation veraltet
-
Wen interessiert es ob die Defferenz zwischen zwei Werten eine Fließkommazahl oder eine nat. Zahl ist. Wenn ich der Defferenz eine Fließkommazahl zuweisen kann, dann ist es ok.
Das sagt sich halt leicht, aber gerade wenn man mit eher typunsicheren Sprachen arbeitet wie C, kann sowas auch nach hinten los gehen. Einfachstes Beispiel wär die Funktion printf() mit dem Formatstring, denn dieser wird auch nicht vom Compiler überprüft, allerdings kann es Folgen mit sich ziehen, wenn dieser falsch angegeben wurde.
printf("%s", foo);
Kannst du mir jetzt sagen, ob dieser Aufruf einen Fehler verursachen wird oder nicht?
-
... schrieb:
Wen interessiert es ob die Defferenz zwischen zwei Werten eine Fließkommazahl oder eine nat. Zahl ist. Wenn ich der Defferenz eine Fließkommazahl zuweisen kann, dann ist es ok.
Das sagt sich halt leicht, aber gerade wenn man mit eher typunsicheren Sprachen arbeitet wie C, kann sowas auch nach hinten los gehen. Einfachstes Beispiel wär die Funktion printf() mit dem Formatstring, denn dieser wird auch nicht vom Compiler überprüft, allerdings kann es Folgen mit sich ziehen, wenn dieser falsch angegeben wurde.
printf("%s", foo);
Kannst du mir jetzt sagen, ob dieser Aufruf einen Fehler verursachen wird oder nicht?
so kann man das natürlich nicht sagen. Aber mit printf("%s", s_foo); wüßte ich es auch nicht. Steht s für short, string, struct oder was auch immer? Wäre pc_foo leserlicher? Sicher nicht.
Ich würde eher auf printf verzichten. Das ist eh keine gute Funktion, so wie der größte Teil der C Standard Library.
-
... schrieb:
Das sagt sich halt leicht, aber gerade wenn man mit eher typunsicheren Sprachen arbeitet wie C, kann sowas auch nach hinten los gehen. Einfachstes Beispiel wär die Funktion printf() mit dem Formatstring, denn dieser wird auch nicht vom Compiler überprüft, allerdings kann es Folgen mit sich ziehen, wenn dieser falsch angegeben wurde.
Ja, die ganzen print und scan Funktionen gehören sicherlich nicht gerade zur Sternstunde von C. Es gibt allerdings Compiler, die selbst dort Typprüfungen durchführen, zB GCC. Aber auch mit UN heisst das noch lange nicht, dass du auf der sicheren Seite bist. Ein Compiler macht nunmal keine Syntaxprüfung bzgl. UN. Letztendlich reduziert sich die Fehleranfälligkeit dabei auf den Faktor Mensch. Nicht besonders beruhigend wenn du mich fragst.
-
printf( "%s", strFoo );
-
... schrieb:
Das sagt sich halt leicht, aber gerade wenn man mit eher typunsicheren Sprachen arbeitet wie C,
Huch? C hat bis auf eine kleine Änderung das gleiche Typensystem wie C++.