C언어 또는 C++언어를 배우게 된다면 꼭 만나게 되는 파일이 .c / .cpp 파일 외에 아마 object 파일(.o)과 header 파일(.h)일 것입니다.
object 파일
먼저 object 파일은 ‘컴파일 혹은 어셈블러 프로그램을 통해 변환된 파일’을 말합니다. 목적 파일이라고도 불리는 object 파일은 기계어나 혹은 이에 준하는 RTL과 같은 이진 코드로 이루어져 있다고 합니다. 쉽게 설명하면 .c / .cpp 파일은 우리가 수정하거나 쉽게 읽을 수 있는 코드들로 작성된 반면에 작성된 코드들을 컴파일을 통해 기계어 혹은 이진 코드로 변환되어 만들어지는 파일이 object 파일입니다.
header 파일
header 파일은 ‘컴파일러에 의해 다른 소스 파일에 자동으로 포함된 소스 코드의 파일’입니다. 일반적으로 header 파일은 소스 파일 속의 첫 부분에 포함됩니다.
object 파일
누군가에게 자신의 .c / .cpp 파일을 준다면 받은 사람은 코드를 수정 및 변경이 가능합니다. 그렇지만 object 파일을 준다면 쉽게 코드를 확인하거나 수정할 수 없게 됩니다. 이런 차이 외에도 object 파일은 사용될 수 있지만 기본적으로 사용되는 상황을 설명드렸습니다.
header 파일
복잡한 실행 파일을 만들기 위해선 코드의 양과 함수의 양은 길어질 수 밖에 없습니다. 그런 코드들이 모두 .c/.cpp 파일에 들어 있다면 어떨까요? 디버깅이 매우 어려울 것입니다. 또는 전역 함수 사용이 중복될 가능성도 많아지며, 여러 명이 함께 프로그램을 개발하기 힘들어집니다. 이런 많은 문제가 있기 때문에 header 파일이 사용됩니다.
이런 문제뿐 아니라 조금 더 전문적으로 설명드리면 프로그래밍 언어에서 표준 라이브러리에는 많은 함수들이 존재합니다. 함수는 사용자가 API 수준에서 알아야 합니다. 개발 도구를 만드는 입장에서 합수를 사용하는 방법만 제공할 뿐, 함수 내에 코딩이 어떻게 되어 있는지는 알려줄 필요가 없습니다. 그렇기 때문에 라이브러리 코드는 오브젝트 파일로 존재하고 헤더 파일에는 함수나 변수의 타입이 선언되어 있으므로 사용자는 함수 이름과 변수의 타입을 이용하여 함수를 사용할 수 있습니다.
object 파일과 header 파일은 더 많은 방식으로 사용될 수 있지만 가장 기초적으로 사용하는 이유와 가장 많이 사용되는 경우를 예를 들어 설명해드렸습니다.
쉬운 이해를 돕기 위해 손으로 작성하여 보여드리겠습니다.
설명이 틀린 부분이나 부족한 부분이 있다면 꼭 아래 댓글로 요청해주세요! 감사합니다. 😄
댓글