Zatrzymanie programu na jakiś czas (Ubuntu i Win)

0

Hej, mam pewien problem. Swój program musze zatrzymac na czas 2 sekund i nastepnie dalej go wykonywac. Problem pojawia sie, gdy kompiluje go raz na Win, a potem na Ubuntu. Mam coś takiego:

#if defined(__LINUX__) || defined(__linux__)
sleep(2);
#endif
#if defined(__WIN32__) || defined(__win32__) || defined(__WIN64__) || defined(__win64__)
_sleep(2000);

Przeczytałem gdzieś, że _sleep jako arg bierze milisekundy, natomiast sleep sekundy. Skoro to, to przecież 1s = 1000 milisekund i wszystko powinno być ok.

Ale jakoś to dziwnie działa, nie wiem, czy ten czas jest taki sam :/ Powiedzcie, czy rzeczywiście _sleep() jako arg bierze milisekundy, natomiast sleep() sekundy?

0

ale ja nie chcę WinAPI! ;) A co jesli nie zalaczylem unistd.h (bo nie zalaczylem) a uzylem sleepa? Zalaczylem jedynie iostream, cstdlib i ... tyle. No i w porzadku, bo dziala, ale co z WinAPI ? Bo ja nie chce go uzywac, a sleepa potrzebuje

0

Jest pewien pakiet bibliotek załączanych do każdego domyślnie stworzonego projektu, stąd to działa. Sleep nie jest funkcją runtime C. W Linuksach używasz POSIX, jest to prawie to samo co WinAPI dla Windows.

0

Czyli moje rozwiązanie jest jak najbardziej poprawne?

0

W gruncie rzeczy, tak, takie różnice sprowadzają się do warunkowych zmiennych kompilacji.

0

No i w porzadku, bo dziala, ale co z WinAPI ? Bo ja nie chce go uzywac
a co ci szkodzi, skoro i tak używasz go pod #ifdef-em?

0

Tak mam narzucone :P Ok, niech więc zostanie tak

1 użytkowników online, w tym zalogowanych: 0, gości: 1