webForumDet fria alternativet

OS-indep sleep

C/C++ur C/C++

1 svar · 178 visningar · startad av fnolis

Medlem sedan sep. 200162 inlägg
Frågan#1

Letar efter ett sätt att ha en sleep som är os independent.
eftersom sleep, Sleep, usleep inte är samma på Windows och *n*x os borde man kunna göra

#ifdef _WIN32
#define SLEEP Sleep(int ms)
#else
#define SLEEP usleep( int ms )
#endif

eller ngt? fick iofs ett förslag att använda select() men det känns inte rätt...

Medlem sedan juli 2002581 inlägg
#2

Tanken är rätt, men syntaxen är fel...

#ifdef _WIN32
#define SLEEP Sleep
#else
#define SLEEP usleep
#endif
#ifdef _WIN32
#define SLEEP(ms) Sleep(ms)
#else
#define SLEEP(ms) usleep(ms)
#endif

Dessa två sätt fungerar. Ett ännu bättre sätt vore att skriva

void portableSleep(int ms)
{
  #ifdef _WIN32
    Sleep(ms);
  #else
    usleep(ms);
  #endif
}

På det sättet slipper man makron.

132 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)