Jak zrobic sekundowe zamykanie programu [C++]


(Konrad12315) #1

Witam o to znowu ja :wink:

Mam taki mały problem [który to już? :D].

Mam kod:

else

			{

				cout << "Dwie proby zuzyte! Program zamknie sie za 3 sekundy!" << endl;

				// Tutaj funkcja zamkniecia sekundowego :P

			}

Chce zrobić, aby program zamykal sie np po 3 sekundach, ale nie wiem jak :expressionless:

Próbowałem exit(3);, ale nie działa :frowning:

Z góry dziękuje za pomoc :slight_smile:


(Krzysiekaczor) #2

Spróbuj sleep lub delay :slight_smile: któreś zadziala :slight_smile:

PS: Znalazłem i masz tu bibliotekę http://komputery.katalogi.pl/%5Bc++%5D_ ... 68883.html


(Konrad12315) #3

Dzięki z tym _sleep i time.h zadzialalo.

Temat można zamknąć :slight_smile:


(Sawyer47) #4

To jest złe rozwiązanie, bo polega się na konkretnej implementacji biblioteki standardowej! Nazwy poprzedzone podkreśleniem są zarezerwowane do implementacji biblioteki standardowej i nie powinno się używać takich funkcji, zwłaszcza, że nie ma się żadnej pewności, że w innych implementacjach będą miały takie same nazwy. Masz bardzo małe szanse, że skompilujesz ten kod na innym kompilatorze, np. na g++ (4.3) po prostu nie ma funkcji _sleep w implementacji biblioteki standardowej.

Radzę zainteresować się bibliotekę boost: http://www.boost.org/


(Fiołek) #5

Albo użyć biblioteki natywnej dla danego systemu(vide WinAPI dla Windows, unistd.h dla Linux)


(Sawyer47) #6

Dokładniej to dla POSIX, czyli wielu wielu systemów. Ale i tak lepiej użyć boost, po prostu jest spójne i niezależne od platformy.


(Fiołek) #7

Nigdy nie lubiłem boost, dlatego poradziłem użyć funkcji zależnych od platformy. Jeden #ifdef i jedno makro i niezależne od platformy.


(Sawyer47) #8

W sumie jeżeli chodzi tylko o sleep to można użyć #ifdef

Przydatna może być lista predefiniowanych mark: http://predef.sourceforge.net/


(Matrix) #9

else

{

cout << "Dwie proby zuzyte! Program zamknie sie za 3 sekundy!" << endl;

sleep(3); // mozna zaincludeowac: #include ale bodajze nie trzeba

}