fopen -> fopen_s ...



  • Ich habe mein Programm von VC 6.0 nach VS 2008 Standard übertragen.
    Es kommen immer wieder Warnungen, man solle doch fopen durch fopen_s
    ersetzen. Wie unterscheidet sich fopen_s von fopen ( nicht von der Syntax )?
    Es gibt soviel ich weiss noch andere Funktionen die man ersetzen sollte. Gibt fopen auch bei VS 2008 NULL zurück wenn der Dateinamen-Pfad ungültig ist ?



  • Sieh doch gleich in der MSDN nach:
    http://msdn.microsoft.com/en-us/library/z5hh6ee9%28VS.80%29.aspx
    Ist die "secure" Variante von fopen.

    Ersetze deine Funktionen mit den secure-Varianten.
    VS sagt das nicht ohne Grund.

    Les dir am besten den MSDN-Link durch, da steht alles Wichtige drin.



  • R3dNeXX schrieb:

    Ersetze deine Funktionen mit den secure-Varianten.
    VS sagt das nicht ohne Grund.

    Muss man ja nicht unbedingt. Du hast zwar grundsätzlich Recht, dass es nicht verkehrt ist, die sicheren Varianten zu benutzen, aber es gibt auch Fälle, wo das komplette Umschreiben imho unnötig aufwendig ist. Wenn man eine Riesenanwendung portiert, die seit Jahren problemlos läuft, kann man auch einfach _CRT_SECURE_NO_WARNINGS definieren, um sich die Warnungen vom Hals zu halten (und so wieder den Blick frei zu haben für 'echte' Warnungen).


  • Mod

    An fopen selbst hat saich nichts geändert.
    Ansonsten

    #define _CRT_SECURE_NO_WARNINGS
    

    Danbn kannst Du fopen ohne Warnung verwenden.



  • _matze schrieb:

    R3dNeXX schrieb:

    Ersetze deine Funktionen mit den secure-Varianten.
    VS sagt das nicht ohne Grund.

    Muss man ja nicht unbedingt. Du hast zwar grundsätzlich Recht, dass es nicht verkehrt ist, die sicheren Varianten zu benutzen, aber es gibt auch Fälle, wo das komplette Umschreiben imho unnötig aufwendig ist. Wenn man eine Riesenanwendung portiert, die seit Jahren problemlos läuft, kann man auch einfach _CRT_SECURE_NO_WARNINGS definieren, um sich die Warnungen vom Hals zu halten (und so wieder den Blick frei zu haben für 'echte' Warnungen).

    Ja du hast Recht.

    Für große Projekte ist es eine Überlegung wert, es so zu lassen, aber bei kleinen sollte man es schon machen.
    Wenn der Aufwand gerechtfertigt ist, kann man es tun.



  • R3dNeXX schrieb:

    Für große Projekte ist es eine Überlegung wert, es so zu lassen, aber bei kleinen sollte man es schon machen.
    Wenn der Aufwand gerechtfertigt ist, kann man es tun.

    Ja. Oder man geht (in größeren Projekten) einen Mittelweg und ändert hin und wieder die Aufrufe, die einem gerade über den Weg laufen. So mache ich das manchmal. Wenn ich irgendwo sprintf mit %s sehe, ändere ich es halt in _snprintf. Aber für den Aufwand, alles in einem Rutsch zu ändern, fehlen mir Zeit und Motivation (zumal viele Aufrufe ja auch unkritisch sind, Warnung hin oder her).


Anmelden zum Antworten