[완료] unistd.h을 포함 안해도 컴파일이 되는 이유?
글쓴이: hwanikani / 작성시간: 일, 2011/09/25 - 3:19오후
int main()
{
sleep(3);
return 0;
}
분명히 sleep() 함수는 unistd.h에 정의 되어 있기 때문에
#include 을 해줘야 되는줄 알았는데
이상하게 include 안해줘도 컴파일이 정상적으로 되네요...
syscall() 함수도 마찬가지구요.
gcc에서 자동으로 unistd.h파일을 포함하나 싶어서
심지어 unistd.h파일을 지워봤는데도 정상적으로 컴파일이 되더군요 - _-;;
혹시 왜 이런지 아시는분 계신가요?
Forums:
C는 함수원형이 선언되어있지 않으면 암묵적으로 원형이
C는 함수원형이 선언되어있지 않으면 암묵적으로 원형이 (기억이 확실친 않지만 아마도) int를 받고 int를 돌려주는 함수로 인식합니다.
만약 암묵적으로 선언된 원형이 원래 쓸려던 함수와 맞지 않는다면 링크단계에서 심볼이 없다고 에러가 나지요.
g++로 컴파일하면 안될거에요.
답변 감사드립니다!
답변 감사드립니다!
댓글 달기