C++ 프로그래밍/기초 문법

[C++ 기초 문법] 분할 컴파일

SW Developer 2024. 2. 11. 17:02

분할 컴파일

 

지금까지는 코드 작성에 자주 활용되는 함수들을 매번 새로 작성했었다. 하지만 자주 활용되는 함수나 구조체들은 다른 저장소에 따로 관리해 놓고 원할 때만 불러와서 사용하면 편할 것이다. 그 개념이 바로 분할 컴파일이다. 분할 컴파일은 기본적으로 하나의 프로그램을 여러 개의 파일로 나누어 작성하는 방식으로, 헤더 파일(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;
}

 

 

 

 

 

※ 해당 게시글은 개인 학습의 목적으로, 아래 강의를 수강한 후 정리한 학습노트입니다.

https://inf.run/pypW