Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    107

    Sleep in C?!

    esiste un equivalente dello sleep() in c?
    perchè se lo uso in c++ me lo da senza problemi, ma se la compilo su c mi da undefined reference

    grazie in anticipo ^^

  2. #2
    sleep non esiste né in C né in C++ a livello di standard; esistono però la syscall POSIX sleep (per la quale devi includere <unistd.h>), mentre per Windows c'è la API Sleep (per cui devi includere <windows.h>); nota che la sleep accetta come parametro il numero di secondi, mentre la Sleep il numero di millisecondi.
    Se ti serve un delay più accurato su sistemi POSIX c'è anche la usleep (che accetta come argomento i microsecondi da attendere, ma che in genere ha una precisione effettiva molto minore).


    P.S.: POSIX = Linux, UNIX, Mac OS X, ...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    La sleep() è una funzione C appartenente allo standard POSIX. A seconda del tuo compilatore e del tuo sistema, puoi ricorrere o alla sleep() includendo unistd.h oppure (su Windows) alla Sleep() includendo windows.h.

    EDIT: damn it
    every day above ground is a good one

  4. #4

    Re: Sleep in C?!

    Originariamente inviato da darksergio
    esiste un equivalente dello sleep() in c?
    perchè se lo uso in c++ me lo da senza problemi, ma se la compilo su c mi da undefined reference

    grazie in anticipo ^^
    la funzione sleep() dello standard POSIX è C, devi includere unistd.h

    E la funzione Sleep() di windows è sempre C, e devi includere windows.h

    sicuro che includi questi 2 file ?

    Originariamente inviato da YuYevon
    EDIT: damn it
    lolide
    Java Programmer

    Informati

  5. #5
    Originariamente inviato da YuYevon
    EDIT: damn it
    Lentiiii!
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    107
    azz, io uso windows, ma in facoltà hanno leopard non esiste una funzione globale???

  7. #7
    No. Ma con un paio di #ifdef puoi scrivertela facilmente:
    codice:
    #if defined(POSIX)
    #include <unistd.h>
    #elif defined(_WIN32)
    #include <windows.h>
    #endif
    
    void PortableSleep(unsigned int MSec)
    {
    #if defined(POSIX)
        usleep((useconds_t)MSec * 1000);
    #elif defined(_WIN32)
        Sleep((DWORD)MSec);
    #else
    #error Piattaforma non supportata
    #endif
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    107
    Ora provo

    Grazie a tutti ^^

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    107
    eurekaaaa xD


    funziona, grazie

  10. #10
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.