[c] C에서 ‘sleep’함수에 대한 적절한 #include는 무엇입니까?

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



답변

sleep man 페이지<unistd.h>.

개요:

#include <unistd.h>

unsigned int sleep (unsigned int 초);


답변

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.


답변