PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zeit/time -=)_(=- windows/linux



howtnted
09-04-2005, 17:51
so habe nochmal ne frage, wie ich meinen code möglichst nah an dem in der c++ windowsprogrammierung zu halten. Ich glaub dass wird noch nen bisl schwerer als das mit der conio.h. Also mein problem ist folgendes: Unter windows habe ich unter der windows.h die funktion GetTickCount(); gehabt.
Was gibts vergleichbares unter Linux?

Und zwar würde ich das gerne so anstellen, dass es auf win und linux läuft, ohne das ich was änder. hmm vielleicht mit hilfe von #define.
keine ahnung ob sowas geht. Wenn man vielleicht unter Linux die funktion ?(); für die zeit hätte.
wäre es möglich zu sagen.
#define ?() GetTickCount();
das er das selbe dann irgendwie auch unter windows verarbeiten kann?! Wäre echt nett wenn ihr dazu ne antwort wüsstet.


So noch ne allgemeine frage. Ist die konsole unter linux schneller als die von win? Also wenn man eine figur über die ganze konsole laufen lässt, ist sie dann gleich schnell auf beiden konsolen? würde mich einfach mal interessieren!

Sry für die ganzen rechtschreibfehler.... meine finger sind so kalt -.- *grins

cu Hotte

howtnted
09-04-2005, 19:26
ok also ich hab da was gefunden.... naja nach langen suchen hier im forum und google.
Also gettimeofday(); is ja so ähnlich wie GetTickCount(); .... naja ...


#include <sys/time.h>
#include <unistd.h>

struct timeval tv;
struct timezone tz;

gettimeofday( &tv, &tz);
printf( "%d seconds, %d microseconds\n", tv.tv_sec, tv.tv_usec);

aber die frage is nun wie mach ich dieses gettimeofday(); windowskompatibel?
ich meine diese time.h gibts ja auch aber irgendwie is die anders oder?
ich habe meinen quelllcode damit kompiliert aber er hat das gettimeofday nicht gefunden.unter linux no prob. Tja ich weiß nimmer weiter wäre echt cool wenn ihr sone möglichkeit kennt. an dem quellcode erkennt man ja, dass tv.tv_sec die sekunden speichert. Genau das macht doch GetTickCount(); auch oder?

wäre es denn möglich mit #define?

#define tv.tv_sec GetTickCount();

oder tv.tv_sec = GetTickCount();

keine ahnung? wie würdet ihr das machen?

locus vivendi
09-04-2005, 19:40
Sorry, aber das ist alles etwas konfus was du schreibst..., also du kannst gettimeofday auch unter Windows verwenden. Gettimeofday gehört nämlich zum sogenannte POSIX-Standard. Und von dem gibt es auch Implementierungen für Windows. Google doch mal nach Cygwin, vielleicht hilft dir das weiter. Von dem "#define" würde ich Abstand nehmen. Besser wäre es, zumindest meiner Meinung nach, Wrapper-Funktionen zu schreiben. Vielleicht erhältst du ja auch noch mehr Antworten.

howtnted
09-04-2005, 22:01
ja von cygwin hab ich gehört... aber das problem ist, in der schule benutzen wir windows mit borland 5.02. Es ist an den pcs in der schule nicht möglich ein linuxartiges programm drauf zu machen. Ich habe nunmal linux drauf, und versuche nun mit möglichst wenig aufwand all diese funktionen wieder zum laufen zu bekommen, die ich bisher gebraucht habe. Das mit der conio.h hat geklappt nun benötige ich nur noch die Zeit. Wie du gesagt hast werd ich weiter googlen. Vielleicht werd ich ja was finden.
wenn ihr trotzdem nen paar weiter tipps habt, wäre ich euch sehr dankbar. Einen schönen abend wünsch ich euch!

cu Hotte

cyk
11-04-2005, 09:40
#include <ctime>

clock_t clock(void);

(zeit (clocks) die das programm bereits gelaufen ist;
dieser wert geteilt durch CLOCKS_PER_SEC ergibt einen wert in Sekunden)

oder einer anderen Funktion aus ctime ...

anda_skoa
11-04-2005, 11:38
time() (aus time.h) ist zwar keine ANSI C oder ISO C Funktion, könnte aber unter Windows auch existieren.

Oft ist eine POSIX Funktion unter Windows nur mit einem Unterstrich vorne oder hinten maskiert, um möglichst keine POSIX Kompatabilität zu erzeugen, aber die Funktionen selbst braucht Windows ja trotzdem.

Ciao,
_

nobody0
15-04-2005, 08:45
time ist eine ANSI-C-Funktion und sollte immer funktionieren; zumindest bei hosted Systemen wie einem PC.
Nur auf kleinen Microcontrollern muß man time selber implementieren.