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 ArgumenteHat 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));