021
16.11.2009, 01:15 Uhr
0xdeadbeef
Gott (Operator)
|
In C++ hab ich das angefangen, weil der Anfangscode ebenfalls C++ war, und ich sah keine sinnvolle Möglichkeit, hier Templates zu benutzen. Einfach nur zum Spaß mach ich das nur, wenn ich gerade zum Spaß code.
Ob man Haskell (oder Perl!) nun für übersichtlicher als C++ hält, ist im Zweifel eine Frage der Gewohnheit. Und Regexes sind hier schon irgendwie geschummelt!
Was die scanf-Geschichte angeht - scanf zu benutzen, ist von sich aus kein Fehler, und die _s-Funktionen zu benutzen, solltest du dir tunlichst verkneifen; sie funktionieren nur im Microsoft-Compiler. Es wäre ein Heidengefummel, die wieder rauszurupfen, wenn dein Code mal auf ner anderen Plattform (oder auch nur mit nem anderen Compiler) laufen soll.
Neben scanf ist in Visual C++ ab 2005 die halbe C-Standardbibliothek als unsicher gekennzeichnet, weil sie seinerzeit auf Performance getrimmt wurde und häufig davon ausgeht, dass der Programmierer weiß, was er tut. strcpy erzeugt zum Beispiel die selbe Warnung, bezeichnenderweise mit einem Verweis auf die microsoft-spezifische strcpy_s-Funktion und nicht etwa die Standardfunktion strncpy, die das selbe macht. Wie dem auch sei, bei scanf war die Begründung, wenn ich das richtig im Kopf habe, dass die Funktion nicht typsicher ist - ob das, was im Format-String steht, mit den Paramtern übereinstimmt, ist nicht sicherzustellen.
Natürlich kann man auch C++ schreiben und std::cin benutzen, womit man sich das Wespennest erspart. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |