I am using the Big Nerd Ranch book Objective-C Programming, and it starts out by having us write in C in the first few chapters. In one of my programs it has me create, I use the sleep function. In the book it told me to put #include <stdlib.h>
under the #include <stdio.h>
part. This is supposed to get rid of the warning that says "Implicit declaration of function 'sleep' is invalid in C99". But for some reason after I put #include <stdlib.h>
, the warning does not go away.. This problem does not stop the program from running fine, but I was just curious on which #include
I needed to use!
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The sleep man page says it is declared in <unistd.h>
. Have you included this in your program?
回答2:
sleep
is a non-standard function.
- On UNIX, you shall include
<unistd.h>
. - On MS-Windows,
Sleep
is rather from<windows.h>
.
In every case, check the documentation.
回答3:
this is what I use for a cross-platform code:
#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:
For sleep()
it should be
#include <unistd.h>
回答5:
sleep(3)
is in unistd.h
, not stdlib.h
. Type man 3 sleep
on your command line to confirm for your machine, but I presume you're on a Mac since you're learning Objective-C, and on a Mac, you need unistd.h
.