Skip to content

00_04.MultipleSourceFiles

jdeokkim edited this page Apr 24, 2022 · 1 revision

다중 소스 파일

우리가 지금까지 대학교 과제를 위해 만들었던 수많은 C 프로그램은 소스 파일이 하나밖에 없는 프로그램이었지만, 규모가 큰 프로그램을 설계할 때는 유지 보수성 (maintainability)을 높이기 위해 프로그램을 여러 개의 소스 파일로 나누어서 작성하는 것이 필수적이다. 여기서 유지 보수성이 높다는 말은, 우리가 만든 프로그램의 버그를 수정하거나 새로운 기능을 추가하기 편해진다는 뜻이다. 도대체 프로그램을 여러 개의 소스 파일로 나눠서 작성하는 것이 왜 중요한 것일까?

우리가 '무지개 6PM 시즈'라는 FPS 게임을 만들었다고 생각해보자. FPS 게임을 만들려면 게임 메뉴를 보여주는 코드, 캐릭터와 맵을 그리는 코드, 캐릭터가 벽을 뚫고 지나가지 못하게 충돌 해결을 하는 코드 등이 필요할 것이다. 만약 이 코드를 전부 다 main.c라는 하나의 소스 파일에 넣으면 어떻게 될까? 우리가 만든 게임의 버그를 수정할 때 프로그램의 소스 코드가 너무 길어서 우리가 필요한 내용을 찾기가 매우 어려울 것이다.

이제 이 코드를 비슷한 기능을 하는 코드끼리 묶어서 collision.c, gameplay.c, menu.c 같이 여러 소스 파일로 나누어보자. 우리는 각 소스 파일마다 서로 다른 기능을 수행하는 것을 알고 있기 때문에, 버그가 생기면 그 버그와 관련된 파일 하나만 수정하면 된다. 예를 들어, 우리가 만든 게임을 테스트해보는 사용자가 "게임 메뉴에서 소리 음량 조절이 안돼요!"라고 버그 신고를 하면, 우리 프로그래머들은 게임 메뉴와 관련된 menu.c라는 파일 하나만 수정하면 될 것이다.

프로그램을 여러 개의 소스 파일로 나누는 것의 또다른 장점은 바로 프로그램의 컴파일 시간을 단축할 수 있다는 것이다. 우리가 게임을 한번 컴파일하고 menu.c 파일만 수정해서 다시 프로젝트 빌드를 하면, 컴파일러는 우리가 만든 게임 프로젝트를 한번 쓱 보고 "음... menu.c만 수정되었으니까 나머지는 컴파일 안해도 되겠네!"라고 판단하여 나머지 파일의 컴파일 과정을 건너뛰게 될 것이다!