분할구현 부분 강의듣는데 도무지 이해가 안가는게 있습니다..
즉 헤더파일: 함수 선언
함수.cpp: 함수 정의(구현)
main.cpp: 함수 호출(사용)
여기까진 알겠는데
함수 cpp와 main cpp에 #include "헤더파일" 부분이 이해가 안갑니다
강사님이 #include "헤더파일"은 헤더파일 내용을 해당 파일에
복사 + 붙여넣기를 해오는거라고 하셨는데
이걸 좀 풀어서 정리해보면
함수.cpp는 (헤더파일의 함수 선언 + 함수.cpp의 함수 정의) 이고
main cpp는 (헤더파일의 함수 선언 + main.cpp의 함수 호출) 로 정리할 수 있겠는데
함수.cpp와 main.cpp 사이엔 아무 연결점, 징검다리가 없는데
왜 둘이 연결이 되는건지..
이래저래 검색해봐도 내가 궁금한 내용은 안나옵니다..살려주십셔..ㅠㅠ
님이 말한 과정은 흔히 전처리 과정이라고 하는데, #include된 헤더파일의 선언 내용을 cpp 소스코드 단위로 전부 컴파일러가 어셈블리 코드(object)파일로 바꿈문제는 컴파일러는 오로지 해당 소스파일의 내용만 컴파일하기 때문에 헤더의 구현부 부분 cpp부분은 알지 못함. 그래서 어떻게 이걸 융합하느냐? 그건 이후 단계인 링킹 단계에서 링커가 처리함 링커는 소스에서 합쳐진 부분에 대해서 각각의 cpp 내부 구현을 참조해서 분할된 소스 코드들을 전부 합치는 과정을 거침 이게 컴파일 과정임
https://bradbury.tistory.com/226
이거 정리 잘되어있으니 읽어보셈
징검다리가 없어도 되요. c++ 는 쉽게 말해서 함수 이름만 알면 어디서든 호출할 수 있습니다. extern 생각해보세요. extern 으로 선언한 변수나 함수가 어디에 있든간에 그런 이름의 변수나 함수가 어디에 있기만 하면 불러올 수 있잖아요!
아 결국 이해하는데 성공했는데 감사인사를 깜빡했네요 다들 알려주셔서 감사합니다!!