Sto usando il libro Big Nerd Ranch Objective-C Programming, e inizia facendoci scrivere in C nei primi capitoli. In uno dei miei programmi mi ha creato, io uso la funzione sleep. Nel libro mi è stato detto di inserire #include <stdlib.h>
nella parte #include <stdio.h>
. Questo dovrebbe eliminare l'avviso che dice "La dichiarazione implicita della funzione 'sleep' non è valida in C99". Ma per qualche ragione dopo aver inserito #include <stdlib.h>
, l'avviso non scompare .. Questo problema non impedisce al programma di funzionare correttamente, ma ero solo curioso di sapere quale #include
avevo bisogno di usare!Qual è il giusto #include per la funzione "sleep" in C?
risposta
Il sonno man page dice che è dichiarato in <unistd.h>
. Hai inserito questo nel tuo programma?
Non l'avevo! Grazie! era solo tipo di infastidirmi, perché il libro diceva che il
Sarebbe meglio usare la funzione sleep() o time() per creare un ritardo? – LandonZeKepitelOfGreytBritn
sleep
è una funzione non standard.
- Su UNIX, è necessario includere
<unistd.h>
. - Su MS-Windows,
Sleep
è piuttosto da<windows.h>
.
In ogni caso, consultare la documentazione.
sleep(3)
è in unistd.h
, non stdlib.h
. Digita man 3 sleep
sulla tua riga di comando per confermare la tua macchina, ma presumo che tu sia su un Mac poiché stai imparando Objective-C, e su un Mac, hai bisogno di unistd.h
.
Per sleep()
dovrebbe essere
#include <unistd.h>
questo è quello che io uso un codice cross-platform:
#ifdef _WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif
int main()
{
pollingDelay = 100
//do stuff
//sleep:
#ifdef _WIN32
Sleep(pollingDelay);
#else
usleep(pollingDelay*1000); /* sleep for 100 milliSeconds */
#endif
//do stuff again
return 0;
}
bella soluzione, utile – HCarrasko
più uno per essere abbastanza coraggiosi da chiedere al semplice domanda e mi hanno aiutato. –
Se si utilizza un sindaco IDE (NetBeans, IntelliJ IDEA, Eclipse). digitare il nome di qualsiasi funzione, quindi Alt + Invio lo importerà automaticamente la libreria che lo ha. – T04435