분할 컴파일
지금까지는 코드 작성에 자주 활용되는 함수들을 매번 새로 작성했었다. 하지만 자주 활용되는 함수나 구조체들은 다른 저장소에 따로 관리해 놓고 원할 때만 불러와서 사용하면 편할 것이다. 그 개념이 바로 분할 컴파일이다. 분할 컴파일은 기본적으로 하나의 프로그램을 여러 개의 파일로 나누어 작성하는 방식으로, 헤더 파일(header file)을 통해 구현 가능하다.
헤더 파일에는 어떤 것들이 작성되어야 할까?
① 함수의 원형
② #define, const (기호 상수) 등
③ Struct (구조체 선언)
④ Class (클래스 선언)
⑤ Template (템플릿 선언)
⑥ inline (인라인 함수)
헤더 파일(.h), 함수(.cpp), 메인코드(.cpp)의 세 파일로 이루어진 코드를 작성해보자
① 헤더파일 (struct.h)
struct.h 헤더파일에 display 함수의 원형을 제공하고, MyStruct 구조체를 선언
#ifndef STRUCT //헤더파일의 중복 사용을 피할 수 있다
#define STRUCT
#include <iostream>
using namespace std;
//Struct 구조체 선언
struct MyStruct
{
string name;
int age;
};
void display(MyStruct&); //display 함수의 원형 제공, 참조를 이용
#endif // !STRUCT
② 함수 (func.cpp)
struct.h 헤더파일을 포함시킨 후 별도의 func.cpp파일을 만들어, 함수의 정의들만 따로 관리한다
#include "struct.h"
void display(MyStruct& temp) {//참조를 이용
cout << "이름 : " << temp.name << endl;
cout << "나이 : " << temp.age << endl;
}
※ #include < > vs #include " " 무슨 차이일까?
< >의 경우, 운영체제의 특별한 위치에 존재하는 C++ 런타임 라이브러리의 헤더 파일을 사용할 때 작성하는 방식이다. 따라서 < > 내에 있는 헤더파일은, 프로젝트의 외부 종속성 파일에 따로 관리되는 헤더파일 중의 하나이다. 반면 < > 형태가 아닌 " "를 사용하는 경우는, 소스 파일이 있는 디렉터리에서 헤더 파일을 포함시키도록 전처리기에 지시하는 경우이다. 그렇기 때문에 " " 방식은 주로 사용자에 의해 정의된 헤더파일을 포함시킬 때 사용된다.
③ 메인코드 (main.cpp)
별도의 원형제공 및 정의 없이 MyStruct 구조체와 display 함수를 사용하는 main 코드 작성
#include "struct.h" //헤더파일
int main()
{
MyStruct ITArchitect = {
"ITLover",
30,
};
display(ITArchitect);
//이름 : ITLover
//나이 : 30
return 0;
}
※ 해당 게시글은 개인 학습의 목적으로, 아래 강의를 수강한 후 정리한 학습노트입니다.
'C++ 프로그래밍 > 기초 문법' 카테고리의 다른 글
[C++ 기초 문법] 클래스 생성자와 파괴자 (0) | 2024.02.12 |
---|---|
[C++ 기초 문법] 추상화와 클래스 (0) | 2024.02.11 |
[C++ 기초 문법] 함수의 템플릿(template) (0) | 2024.02.11 |
[C++ 기초 문법] overloading (0) | 2024.02.11 |
[C++ 기초 문법] 참조변수 reference & (0) | 2024.02.08 |