Что такое правильный #include для функции "sleep" в C?
Я использую книгу Big Nerd Ranch Objective-C Programming, и она начинается с того, что мы пишем на C в первых нескольких главах. В одной из моих программ я создаю, я использую функцию сна. В книге он велел мне поставить #include <stdlib.h>
под #include <stdio.h>
часть. Это должно избавиться от предупреждения, в котором говорится, что "неявное объявление функции"sleep" недопустимо в C99". Но почему-то после того, как я поставил #include <stdlib.h>
предупреждение не уходит.. Эта проблема не останавливает программу от бега нормально, но мне было просто любопытно, на каком #include
мне нужно использовать!
5 ответов
сон man page говорит, что он объявлен в <unistd.h>
. Вы включили это в свою программу?
sleep
- это нестандартная функция.
- в UNIX вы должны включить
<unistd.h>
. - на MS-Windows,
Sleep
С<windows.h>
.
в каждом случае проверьте документацию.
это то, что я использую для кросс-платформенного кода:
#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;
}
sleep(3)
находится в unistd.h
, а не stdlib.h
. Тип man 3 sleep
в командной строке для подтверждения вашей машины, но я предполагаю, что вы находитесь на Mac, так как вы изучаете Objective-C, и на Mac вам нужно unistd.h
.