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