Funktionen als Veraltet(Deprecated) welche sollte ich benutzen



  • Hallo Leute.
    Seit ich VC++ Express habe meint der Compilet daß Funktionen wie

    itoa
    strcpy
    strcat
    strtok
    usw.

    als veraltet eingestuft werden.
    Die "neuen" Versionen davon sind ja
    _itoa_
    strcpy_s
    strcat_s
    strtok_s

    usw.

    Welche Sollte ich benutzen?
    Was ist da sinnvoll?
    Die alten oder die neuer Versionen?

    Danke Mondmann


  • Mod

    Sinnvoll? Was ist schon sinnvoll? 😉

    Frage Dich selbst wie sicher Du es haben möchtest. Was sieht Dein Projekt vor? Wie sicher bist Du Dir bei der Verwendung der Funktionen strcat etc.? Weißt Du dass ein Missbrauch bzw. entsprechende Pufferüberläufe ausgeschlossen sind?

    Du bist nicht verpflichtet die neuen Funktionen zu verwenden. Du kannst _CRT_SECURE_NO_DEPRECATE setzen und die alten Funktionen sind dann nicht deprecated! Siehe auch http://msdn2.microsoft.com/en-us/library/8ef0s5kh.aspx

    In meinen Augen macht die sichere CRT Sinn! Das heißt jedoch nicht, dass ich alle meine Projekte deshalb gleich umstelle!



  • Naja, sinnvoller wäre es eine gescheite String-Klasse einzuführen und zu nutzen.
    (Ob ich mich jetzt bei der Größe des Puffers falsch liege oder bei der Größenangabe bei der Funktion... in beiden Fällen wird Speicher überpinselt.)


  • Mod

    Nicht alles kann man mit Stringklassen machen! Gerade wenn es um Schnittstellen zum OS geht oder selbst definierte DLL Schnittstellen!



  • Stimmt, aber nur weil ich char* kriege oder übergeben muss zwingt mich dies noch lange nicht intern char* und damit die unsicheren Funktionen zu verwenden.
    (Es gibt sicher Stellen an denen es weh tut Speicher/Rechenzeit dafür zu verwenden eine Konvertierung durchzuführen aber einen Tod stirbt man halt und in den meisten Fällen ist es verkraftbar.)


Anmelden zum Antworten