Gerade wenn einem an Portabilität gelegen ist, sollte man jedoch "
localtime"
nicht nutzen. Und das obwohl "_CRT_SECURE_NO_WARNINGS" häufig zu nicht portablen Funktionen verweist, wie auch in dem Fall.
Der Grund liegt nämlich daran, dass "
localtime" nur auf der Windows-Plattform threadsicher ist und threadlokalen Speicher nutzt. (
Siehe MSDN bei "Remarks") Auf Linux hingegen ist die Funktion explizit nicht threadsicher und liegt nicht im Thread lokalen Speicher, was zu sehr schwer zu findenden Bugs führen kann. (Siehe
Linux mal page bei "Notes")
Also ist in diesem Fall tatsächlich eigentlich eher noch "
localtime_s" zu empfehlen, weil in einer Plattformübergreifendenumgebung zwar "
localtime" vorhanden ist, aber eben paradoxerweise scheinbar außer auf Windows unsicher. Wenn man schließlich auch andere Betriebssysteme erreichen will, empfiehlt sich dort die Alternative "
localtime_r" zu "
localtime_s" auf Windows, aber niemals die Standardfunktion.
Da ich vermute, dass vab diesen Code weder auf andere Betriebssystem portiert noch Multithreading nutzen möchte, ist es für ihn letztendlich natürlich eigentlich egal, welche der Beiden Funktionen er verwendet. Er kann also theoretisch noch beide Wege gehen.