
전처리 과정에서는 #include에 적힌 헤더파일들을 C 소스 코드 형태로 앞에 추가하는 걸로 알고 있습니다.
그렇다면 링킹이 이와 다른 점이 무엇인가요? 이미 전처리 과정에서 헤더파일들을 앞에 합쳤을텐데 뭘 또 연결하는 건가요?
전처리 과정에서는 #include에 적힌 헤더파일들을 C 소스 코드 형태로 앞에 추가하는 걸로 알고 있습니다.
그렇다면 링킹이 이와 다른 점이 무엇인가요? 이미 전처리 과정에서 헤더파일들을 앞에 합쳤을텐데 뭘 또 연결하는 건가요?
comment
전처리는 C 소스코드 레벨에서의 병합, 링크는 오브젝트 파일 에서의 병합이라고 이해했습니다.
https://www.boostcourse.org/cs112/lecture/119011?isDesc=false
링크된 페이지의 내용에서 아래와 같은 내용을 확인했었습니다.
[전처리]
예를 들어, #include는 전처리기에게 다른 파일의 내용을 포함시키라고 알려줍니다. 프로그램의 소스 코드에 #include 와 같은 줄을 포함하면, 전처리기는 새로운 파일을 생성하는데 이 파일은 여전히 C 소스 코드 형태이며 stdio.h 파일의 내용이 #include 부분에 포함됩니다.
[링크]
만약 프로그램이 (math.h나 cs50.h와 같은 라이브러리를 포함해) 여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 한다면 링크라는 컴파일의 마지막 단계가 필요합니다.
제가 이해한 바로는 우리가 전에 배운것중에 함수를 정의하고 프로토타입을 상단에 작성 해서 함수가 어떻게 정의되어 있는지 몰라도 함수를 사용 가능하게 했잖아요? 전처리 단계는 바로 함수들을 사용 가능하도록 프로토타입들로 대체해줘서 함수를 사용 가능하게 해주는 과정인것 같아요
링킹은 실제 함수가 정의된 파일은 다른곳에 있기 때문에 이러한 나눠진 파일들을 서로 연결? 병합? 하는 과정이라고 이해했습니다.