안녕하세요
매일 보기만 하다가 이렇게 글을 올려보는것도 처음입니다.
다름이 아니라 C 컴파일러의 include 나 define 그리고
scanf 나 printf 같은 내부함수나 라이브러리 함수 들을 어떻게 처리하는지
알고 싶습니다
헤더를 뒤져 보았지만 선언만 있고 정의는 없더라고요
혹시 이를 알려주실 수 있으신분 계신가요?
프로그램을 작성하실떄 include하시는 stdio.h등의 파일안에 질문자님께서 사용하시는
scanf등의 함수에 대한 선언들이 들어있습니다.
그리고 실제로 구현(정의)는 이미 컴파일이 되어 라이브러리 상태로 미리 준비가 되어있습니다.
따라서 scanf등의 함수를 사용하실때 이미 컴파일 된 바이너리가 존재하므로 컴파일러는 컴파일을 하지 않습니다.
대신 컴파일러가 include파일내의 함수 선언을 가지고 만들어놓은 링크 정보를 가지고 링커가 라이브러리 파일을
뒤져서 해당 코드를 실행파일에 링크를 하게 됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
#include와 #define은
#include와 #define은 전처리기가 처리하는 것입니다. 표준 라이브러리 함수는 라이브러리 소스를 구해보시면 됩니다.
프로그램을
프로그램을 작성하실떄 include하시는 stdio.h등의 파일안에 질문자님께서 사용하시는
scanf등의 함수에 대한 선언들이 들어있습니다.
그리고 실제로 구현(정의)는 이미 컴파일이 되어 라이브러리 상태로 미리 준비가 되어있습니다.
따라서 scanf등의 함수를 사용하실때 이미 컴파일 된 바이너리가 존재하므로 컴파일러는 컴파일을 하지 않습니다.
대신 컴파일러가 include파일내의 함수 선언을 가지고 만들어놓은 링크 정보를 가지고 링커가 라이브러리 파일을
뒤져서 해당 코드를 실행파일에 링크를 하게 됩니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기