J'utilise le livre Objective-C Programming du livre Big Nerd Ranch et il commence par nous faire écrire en C dans les premiers chapitres. Dans l'un de mes programmes qu'il m'a créé, j'utilise la fonction de veille. Dans le livre, il m'a été dit de placer #include <stdlib.h>
sous la partie #include <stdio.h>
. Ceci est supposé supprimer l’avertissement qui dit "La déclaration implicite de la fonction 'sommeil' est invalide dans C99". Mais pour une raison quelconque, après avoir mis #include <stdlib.h>
, l'avertissement ne disparaît pas. Ce problème n'empêche pas le programme de fonctionner correctement, mais j'étais simplement curieux de savoir sur quel #include
je devais utiliser!
Le sommeil page de manuel dit qu'il est déclaré dans <unistd.h>
.
sleep
est une fonction non standard.
<unistd.h>
.Sleep
provient plutôt de <windows.h>
.Dans tous les cas, consultez la documentation.
voici ce que j'utilise pour un code multi-plateforme:
#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;
}
Pour sleep()
il devrait être
#include <unistd.h>
sleep(3)
est dans unistd.h
, pas stdlib.h
. Tapez man 3 sleep
sur votre ligne de commande pour confirmer votre machine, mais je suppose que vous êtes sur un Mac depuis que vous apprenez Objective-C, et sur Mac, vous avez besoin de unistd.h
.