Что такое правильный #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.