web-dev-qa-db-fra.com

Quel est le bon #include pour la fonction 'sommeil' en C?

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!

99
trludt

Le sommeil page de manuel dit qu'il est déclaré dans <unistd.h>.

127
simonc

sleep est une fonction non standard.

  • Sous UNIX, vous devez inclure <unistd.h>.
  • Sur MS-Windows, Sleep provient plutôt de <windows.h>.

Dans tous les cas, consultez la documentation.

54
md5

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;
}
50
Romain VIOLLETTE

Pour sleep() il devrait être

#include <unistd.h>
13
alk

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.

6
Carl Norum