저는 Big Nerd Ranch의 Objective-C Programming이라는 책을 사용하고 있으며 처음 몇 장에서 C로 작성하는 것으로 시작합니다. 내 프로그램 중 하나에서 내가 만든 수면 기능을 사용합니다. 책에서는 그 부분 #include <stdlib.h>
아래 에 두라고했습니다 #include <stdio.h>
. 이것은 “함수 ‘sleep’의 암시 적 선언은 C99에서 유효하지 않습니다.”라는 경고를 제거하기위한 것입니다. 근데 무슨 이유에서인지를 #include <stdlib.h>
붙여도 경고가 사라지지 않습니다.이 문제는 프로그램이 잘 돌아가는 것을 막지는 못하지만 어떤 #include
것을 사용 해야하는지 궁금했습니다 !
답변
답변
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()
는해야한다
#include <unistd.h>
답변
sleep(3)
이 unistd.h
아니라에 stdlib.h
있습니다. man 3 sleep
명령 줄에 입력 하여 컴퓨터를 확인하지만 Objective-C를 배우는 중이므로 Mac을 사용하고 있고 Mac에서는 unistd.h
.