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