happy coding

[c] 분할 컴파일 본문

self study/언어의 기본부터

[c] 분할 컴파일

yeoonii 2022. 11. 28. 00:32
TCP school 을 보고 정리한 내용입니다.

모듈(module)

모듈이란 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미한다. 보통 하나의 소스 파일에 모든 함수를 작성하지 않고, 함수의 기능별로 따로 모듈을 구성하는데, 이러한 모듈을 합쳐 하나의 파일로 작성하는 방식으로 프로그램을 만들게 된다. 이처럼 프로그램 코드를 기능별로 나눠 독립된 파일에 저장해 관리하는 방식을 모듈화 프로그래밍이라고 한다.

분할 컴파일

작성된 모듈은 개별적으로 컴파일된 후, 링커에 의해 하나의 실행 파일로 만들어진다. 이렇게 하나의 실행 파일을 만들기 위해 소스 파일을 여러 개로 나누어 개발하는 방식을 분할 컴파일 방식이라고 한다.

최종적인 실행 파일의 생성을 위해 접근하는 변수나 호출하는 함수가 어디에 있는지 서로 연결해주는 작업링크(link)라고 한다.

extern 키워드

기본적으로 C 컴파일러는 프로그램에 등장하는 전역 변수를 오로지 해당 파일에서만 찾고, 외부 파일에서 참조하는 전역 변수는 컴파일러에게 외부 파일에 존재하는 변수라는 사실을 따로 알려주어야 하는데, 외부 파일에 선언된 전역 변수를 참조하기 위해서는 파일 내에서 extern 키워드를 사용해 다시 한 번 변수를 선언해야 한다. 그러면 C 컴파일러는 extern 키워드가 붙은 전역 변수가 외부 파일에 존재하는 변수임을 인식하고 컴파일을 진행하게 된다. 이 전역 변수는 컴파일된 후, 링크 때가 돼서야 실제로 연결되게 된다.

static 키워드

분할 컴파일 방식에서 변수의 접근 영역을 해당 파일로만 한정시키고자 할 때는 static 키워드를 사용해 선언한다. 이렇게 선언된 변수는 다른 소스 파일에서 extern 키워드를 사용해 선언하더라도 접근할 수 없는 전역 변수가 된다.

 

'self study > 언어의 기본부터' 카테고리의 다른 글

[c] 바이트 저장 순서  (0) 2022.11.30
[c] 조건부 컴파일(conditional compile)  (0) 2022.11.28
[c] 헤더 파일  (0) 2022.11.28
[c] 미리 정의된 매크로(predefined macro)  (0) 2022.11.27
[c] 매크로 함수  (0) 2022.11.27
Comments