VC2010: clock_t in <time.h>
-
Könnte mal bitte ein stolzer Besitzer von VC2010 in der time.h nachschauen,
als was clock_t definiert ist?
Hintergrund: In VC2008 ist es als long definiert. Das ist mir eindeutig zu
klein und nur um nachzuschauen möchte ich VC2010 nicht erst installieren.Danke
-
Was heißt eindeutig zu klein!? clock_t ist immer groß genug, um aufzunehmen, was clock() returned!?
-
Mit zu klein meine ich, dass es bei 4 Bytes und CLOCK_PER_SECS=1000 nach ca. 24 Tagen Programmlaufzeit einen Überlauf gibt.
-
Ja, so ist das eben, clock() läuft also nach 24 Tagen über...
Wieso genau ist das für dich ein Problem?
Es ist übrigens selbstverständlich auch unter MSVC 10 noch ein long.
-
Das ist ein Problem für mich, weil ich Zeiten kleiner eine Sekunde überwachen
möchte und mein Programm sehr viel länger als 24 Tage laufen soll.Danke für die Info. Da brauche ich mich in der Richtung erst gar nicht zu
bemühen.
-
"clock_t" ist denke ich nicht das Problem, da es nur zur Zeitmessung und nicht zum Datums/Uhrzeit-Darstellung verwenden wird.
Das eigentliche Problem ist "time_t".
MS hat zwar seit 2008 (oder war es 2010) automatisch schon "time_t" nach "time64_t" umgemappt aber man kann es wieder zurück-mappen (siehe _USE_32BIT_TIME_T).Alle Programme die auf time32_t aufbauen werden also spätestens 2032 abstürzen... sind ja noch 20 Jahre... aber ich beführchte, dass da noch sehr viele solche Programme laufen werden.
PS: Du kannst auch einfach selber die Express-Version von VS2010 runterladen und selber nachschauen...
PPS: Schau Dir mal "GetTickCount64" an... gibt es aber erst ab Vista:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724411
-
Wenn du nur Zeitdifferenzen messen willst, die kleiner als 24 Tage sind, dann sind Überläufe kein Problem, rechne einfach mit einem unsigned Type
-
Danke für Eure Hilfe.
Ich habe gegenüber einen ähnlichen Thread losgetreten und habe
dort das Ergebnis Eurer Unterstützung dargestellt.