Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

31

24.07.2007, 09:57

Du solltest ein std::size_t als Parameter übergeben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
inline void ulMilliSecondsSleep( std::size_t milliseconds )
{
#ifdef _WIN32
    sleep( milliseconds );
#else
    usleep( milliseconds * 1000 );
#endif
}


Bei mir funktioniert die Funktion übrigens sehr genau! Wenns noch genauer sein soll hilft dir nanosleep().
@D13_Dreinig

32

24.07.2007, 14:08

Diese Funktion habe ich doch nicht geschrieben, die ist aus der PLIB...
Ich werde sie auch nicht übernehmen, weil usleep bei mir für die Füße ist...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

33

24.07.2007, 14:18

einfach unsigned int nehmen und der wert kann nicht negativ werden ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

34

24.07.2007, 14:51

Zitat von »"David_pb"«


Bei mir funktioniert die Funktion übrigens sehr genau! Wenns noch genauer sein soll hilft dir nanosleep().

Hast du explizit unistd.h includiert? Ich nämlich nicht... vllt sollte ich es nochmal damit versuchen...

Ist eigentlich _WIN32 ist scheinbar kein gutes Makro... jedenfalls definiert es MSVC++ nicht... ist WIN32 besser?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

35

24.07.2007, 15:01

Zitat von »"Nox"«

einfach unsigned int nehmen und der wert kann nicht negativ werden ;)


Deswegen ja std::size_t...

Zitat von »"tobb"«

Zitat von »"David_pb"«


Bei mir funktioniert die Funktion übrigens sehr genau! Wenns noch genauer sein soll hilft dir nanosleep().

Hast du explizit unistd.h includiert? Ich nämlich nicht... vllt sollte ich es nochmal damit versuchen...


Jo, versuchs nochmal! ;) Bei mir lief das, wie gesagt, ganz wunderbar!

Zitat von »"tobb"«


Ist eigentlich _WIN32 ist scheinbar kein gutes Makro... jedenfalls definiert es MSVC++ nicht... ist WIN32 besser?


Doch, MSVC++ definiert _WIN32 wenn du ein 32 oder 64 Bit Windows laufen hast. _WIN64 wird nur bei 64 Bit Windows definiert.
@D13_Dreinig

36

24.07.2007, 15:26

verflucht nochmal...
Linux:

Quellcode

1
2
3
4
5
#include "unistd.h"
//..
int temp = SDL_GetTicks();
usleep(1)
std::cout << SDL_GetTicks() - temp << std::endl;

Ausgabe:

Zitat


9

viel zu viel...



Windows:

Quellcode

1
2
3
4
5
#include "windows.h"
//..
int temp = SDL_GetTicks();
Sleep(1)
std::cout << SDL_GetTicks() - temp << std::endl;

Ausgabe:

Zitat


2

naja das ist ja schon aktzeptabel...



System: 3GHz, 1GB RAM / Windows XP Home Edition und Ubuntu Linux 7.04 Feisty

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

37

24.07.2007, 17:01

Wenn mans genau nimmt sollte es heißen:

C-/C++-Quelltext

1
usleep( 1000 );


usleep will ja schließlich Microsekunden! :)
@D13_Dreinig

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

38

24.07.2007, 17:22

@ David_pd Pardon, hatte noch die alten Beiträge, aber nicht die neuen geladen. (man sollte zwischen lesen und posten nicht solange warten :roll: )
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

39

24.07.2007, 17:27

Ja, ich hab' mich vertippt... es sollte usleep(1000) heißen... was die Sache natürlich nicht besser macht...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

40

24.07.2007, 17:49

Zitat von »"Nox"«

@ David_pd Pardon, hatte noch die alten Beiträge, aber nicht die neuen geladen. (man sollte zwischen lesen und posten nicht solange warten :roll: )


Jau, 4 Stunden und 21 Min sind schon extrem lang...
@D13_Dreinig

Werbeanzeige