localtime



  • hallo
    ich schreibe eine C programm unter Microsoft Visual Studio.
    strftime (stunde, 3, "%H", localtime(&momentane_zeit)) für diese zeile bekomme ich Warnung :
    This function or variable may be unsafe. Consider using localtime_s instead.

    Wenn ich statt localtime(&momentane_zeit) localtime_s(&momentane_zeit)bentze bekomme eich so eine Fehlermeldung
    Funktion akzeptiert keine 1 Argumente

    Hat jemand eine Idee?



  • #pragma warning( disable:4996 )
    

    ganz oben im Quelltext.



  • localtime ist nicht threadsicher (benutzt einen statischen Buffer). Es gibt sowohl in POSIX als auch im WinAPI reentrant-Varianten der Funktion, localtime_r und localtime_s respektive. Das sieht dann etwa so aus:

    struct tm buffer;
    
    strftime(stunde, 3, "%H", localtime_s(&momentane_zeit, &buffer))
    

    Für portable Programme musst du eine Funktionszeigerkonstante o.ä. setzen und benutzen; die Funktionen haben die gleiche Signatur, aber Windows hält sich wohl aus Prinzip nicht an POSIX.



  • danke!



  • so kriege ich wieder fehlermeldung.wieso?
    'localtime_s': Konvertierung des Parameters 1 von 'time_t *' in 'tm *' nicht möglich



  • #pragma mit C Standard Funktionen verwenden, also die ohne "_s".



  • Ah, da hab ich mich verkuckt. localtime_s vertauscht die Parameter gegenüber POSIXs localtime_r (diese Schweinehunde!). Also:

    strftime(stunde, 3, "%H", localtime_s(&buffer, &momentane_zeit));
    

Anmelden zum Antworten