Discussione:
equivalente C++ della funzione sleep
(troppo vecchio per rispondere)
dragonet
2008-07-30 16:17:21 UTC
Permalink
Ciao a tutti. Potete dirmi se esiste in C++ l'equivalente della funzione
sleep del C? Grazie.
Atreides
2008-07-30 19:37:22 UTC
Permalink
Post by dragonet
Ciao a tutti. Potete dirmi se esiste in C++ l'equivalente della funzione
sleep del C? Grazie.
Su che piattaforma lavori? Comunque non esiste la "funzione c++" sleep,
come non eiste la "funzione C" sleep. Avrai una libreria che implementa
sleep().

Ad esempio su windows le winapi hanno

VOID WINAPI Sleep(__in DWORD dwMilliseconds);

Requirements

Client
Requires Windows Vista, Windows XP, or Windows 2000 Professional.

Server
Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.

Header

Declared in Winbase.h; include Windows.h.
Library

Use Kernel32.lib.

DLL

Requires Kernel32.dll.


Ciao
dragonet
2008-07-30 19:57:15 UTC
Permalink
Post by Atreides
Post by dragonet
Ciao a tutti. Potete dirmi se esiste in C++ l'equivalente della funzione
sleep del C? Grazie.
Su che piattaforma lavori? Comunque non esiste la "funzione c++" sleep,
come non eiste la "funzione C" sleep. Avrai una libreria che implementa
sleep().
Una libreria è un contenitore di funzioni, e sleep e una funzione, o
sbaglio? Comunque sto lavorando su windows. Ho provato con:

#include<iostream>
#include<stdlib.h>
#include <unistd.h>
#include<windows.h>

ma ugualmente il compilatore mi dice:

`sleep' undeclared (first use this function)

Posto una parte del codice:

void contatori::secondi2()
{
{
int sec=0;

while(sec<60)
{
if(sec>9)
{
printf("\r");
printf("00:00:%d",sec);
printf("\b\b");
}
else
{
printf("00:00:0%d",sec);
printf("\r");
}
sleep(1000);
fflush(stdout);
sec++;
}; //chiusura while
nembo kid
2008-07-31 06:28:52 UTC
Permalink
Post by dragonet
`sleep' undeclared (first use this function)
Forse è Sleep

P.S.

Metti l'header <windows.h>
per primo (a me funzionava sol così...boh)
Atreides
2008-07-31 17:35:40 UTC
Permalink
Post by dragonet
Post by Atreides
Post by dragonet
Ciao a tutti. Potete dirmi se esiste in C++ l'equivalente della funzione
sleep del C? Grazie.
Su che piattaforma lavori? Comunque non esiste la "funzione c++" sleep,
come non eiste la "funzione C" sleep. Avrai una libreria che implementa
sleep().
Una libreria è un contenitore di funzioni, e sleep e una funzione, o
Ma tu non hai detto "funzione di libreria" hai detto "funzione C" o
"funzione C++".

Messa in questo modo sbagli. E ripeterai l'errore con la prossima
funzione se, anziche' cercare la funzione di libreria che implementa la
funzionalita' richiesta, cercherai "dentro" un linguaggio.

Max
Andrea Laforgia
2008-07-31 09:00:46 UTC
Permalink
Post by dragonet
Ciao a tutti. Potete dirmi se esiste in C++ l'equivalente della funzione
sleep del C? Grazie.
Né in C, né in C++ esiste una funzione sleep() standard. In questi
linguaggi esistono funzioni standard e funzioni non standard ed una
eventuale funzione sleep() è tipicamente dipende dal compilatore/
piattaforma. Per cui la presenza, il nome e l'uso di tale funzione
dipende strettamente dall'ambiente con cui stai lavorando. Se stai
lavorando sotto UNIX/Linux esistono le Posix sleep()/usleep()/
nanosleep(), se stai lavorando sotto Windows esiste la Sleep() o
SleepEx().
dragonet
2008-07-31 19:13:22 UTC
Permalink
Ok, grazie a tutti per le informazioni, ha funzionato con Sleep. Non capisco
però: mi state dicendo che la funzione non appartiene al linguaggio, ma al
sistema operativo? Quindi non è uno standard? Potrei trovarmi a sviluppare
su un sistema operativo dove questa funzione non viene riconosciuta perchè
non esiste? Qual è la differenza tra una funzione del linguaggio e una
funzione di libreria? Quest'ultima non è comunque stata scritta utilizzando
gli strumenti messi a disposizione dal linguaggio? Perdonatemi l'ignoranza,
ma sono cose che ho iniziato a studiare da poco! (a settembre inizierò il
quarto anno di perito informatico).
Post by dragonet
Ciao a tutti. Potete dirmi se esiste in C++ l'equivalente della funzione
sleep del C? Grazie.
Né in C, né in C++ esiste una funzione sleep() standard. In questi
linguaggi esistono funzioni standard e funzioni non standard ed una
eventuale funzione sleep() è tipicamente dipende dal compilatore/
piattaforma. Per cui la presenza, il nome e l'uso di tale funzione
dipende strettamente dall'ambiente con cui stai lavorando. Se stai
lavorando sotto UNIX/Linux esistono le Posix sleep()/usleep()/
nanosleep(), se stai lavorando sotto Windows esiste la Sleep() o
SleepEx().
Andrea Laforgia
2008-07-31 20:22:41 UTC
Permalink
On Thu, 31 Jul 2008 21:13:22 +0200, "dragonet"
Post by dragonet
Ok, grazie a tutti per le informazioni, ha funzionato con Sleep. Non capisco
però: mi state dicendo che la funzione non appartiene al linguaggio, ma al
sistema operativo? Quindi non è uno standard?
Hai capito bene.
Post by dragonet
Potrei trovarmi a sviluppare
su un sistema operativo dove questa funzione non viene riconosciuta perchè
non esiste?
Ovviamente (e difatti la Sleep() di Windows è supportata solo da...
Windows :-)
Post by dragonet
Qual è la differenza tra una funzione del linguaggio e una
funzione di libreria?
Non esistono "funzioni del linguaggio" che non siano "funzioni di
libreria". Esiste la differenza tra le funzioni messe a disposizione
dalla piattaforma (e che tipicamente estendono in linguaggio con
propaggini specifiche per la macchina su cui stai sviluppando) e
quelle fornite in maniera standard con la libreria del linguaggio (e
che comunque, sulle diverse piattaforme, si interfacciano a basso
livello con le API del s.o.).

Per esempio, se consideri la malloc(): utilizzandola sicuramente rendi
il tuo codice portabile, ma la libreria che accompagna ciascun
compilatore implementerà la malloc() "wrappando" l'API specifica del
sistema operativo (VirtualAlloc() sotto WIndows, tanto per fare un
esempio).

Loading...