Что такое #include для функции "sleep" в C?

Я использую книгу Big Nerd Ranch Objective-C Programming, и она начинается с того, что мы пишем на C в первых нескольких главах. В одной из моих программ он создает меня, я использую функцию сна. В книге мне было сказано, что #include <stdlib.h> находится под частью #include <stdio.h>. Это должно избавиться от предупреждения, в котором говорится: "Неявное объявление функции" sleep "недействительно в C99". Но по какой-то причине после того, как я положил #include <stdlib.h>, предупреждение не исчезнет. Эта проблема не мешает программе работать нормально, но мне было просто любопытно, в какой #include мне нужно было использовать!

Ответ 1

Справочная страница по сну говорит, что она объявлена в <unistd.h>.

Ответ 2

sleep является нестандартной функцией.

  • В UNIX вы должны включить <unistd.h>.
  • В MS-Windows, sleep скорее от <windows.h>.

В каждом случае проверьте документацию.

Ответ 3

это то, что я использую для кросс-платформенного кода:

#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;
}

Ответ 4

Для sleep() это должно быть

#include <unistd.h>

Ответ 5

sleep(3) находится в unistd.h, а не stdlib.h. Введите man 3 sleep в командной строке, чтобы подтвердить свою машину, но я предполагаю, что вы на Mac, так как вы изучаете Objective-C, а на Mac вам нужно unistd.h.