[C++] 파일 분할 시 인라인 함수의 정의를 헤더파일에 포함시켜야 하는 이유

sookyeong·2023년 3월 13일
0

컴파일 과정은 다음의 단계를 거친다.

.cpp → 전처리(# 전처리문 대체) → 컴파일(문법해석 및 최적화) → 어셈블(바이너리파일 생성) → 링크(바이너리파일 간 참조 연결) → .exe

main()에 작성된 인라인 함수의 호출문은 컴파일 단계에서 해당 인라인 함수의 몸체로 대체된다.

컴파일은 파일 단위로 이루어지고, 그 과정에서 다른 .cpp 파일을 참조하지 않으므로 인라인 함수의 호출문을 그 몸체로 올바르게 대체하려면 해당 파일 내부에 해당 함수의 몸체가 존재하여야 한다.

#include 지시문으로 main()에 포함된 헤더파일은 전처리 단계에서 그 내용이 온전히 복사되므로 컴파일 대상 파일의 일부가 된다.

따라서 인라인 함수의 적절한 대체가 이루어지려면 main()에 포함된 헤더파일에 해당 함수의 선언 및 정의가 포함되어 있어야 한다.

profile
actions speak louder than words

0개의 댓글