ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 분할 컴파일
    C++ 2025. 3. 27. 14:50

    분할 컴파일이란 파일들을 개별적으로 분할하여 컴파일 한 후에 그것들을 하나의 최종 실행프로그램으로 실행하는 것

    #include <iostream>
    
    using namespace std;
    struct MyStruct {
        string name;
        int age;
    };
    void display(MyStruct&);
    
    int main(void) {
        MyStruct Hong = {
            "Hong",
            26,
        };
    
        display(Hong);
        return 0;
    }
    
    void display(MyStruct& temp) {
        cout << "이름 : " << temp.name << endl;
        cout << "나이 : " << temp.age << endl;
    }

    name과 age를 멤버변수로 갖는 MyStruct 구조체를 만들었다.

    Hong이라는 이름으로 구조체를 선언하였고,
    구조체 안에 Hong과 26이란 값으로 초기화 하였다.

    위 코드는 크게 3부분으로 나눌 수 있다.

    첫번째로 구조체를 정의하고 함수의 원형을 선언한 부분

    두번째로 함수의 몸체를 정의하는 부분

    세번째로 함수를 사용하는 메인함수 부분이다.

     

    분할 컴파일이란 이 프로그램의 세부분을 나눠서 컴파일하는 부분이다.

     

    헤더파일 안에는 주로

    1. 함수 원형

    2. #define이나 const를 사용하는 기호 상수

    3. 구조체 선언

    4. 클래스 선언

    5. 템플릿 선언

    6. 인라인 함수

    가 포함된다.

    #include <iostream>
    
    using namespace std;
    struct MyStruct {
        string name;
        int age;
    };
    void display(MyStruct&);

    이 부분을 헤더 파일안에 넣겠다.

    main함수에서 #include "struct.h"를 하면 파일을 불러올 수 있다.

    void display(MyStruct& temp) {
        cout << "이름 : " << temp.name << endl;
        cout << "나이 : " << temp.age << endl;
    }

    이 부분도 소스 파일안에서 fun.cpp로 분류 할 수 있다.

     

    이렇게 파일을 분할하여 컴파일하면 코드를 획기적으로 재사용할 수 있다.

    그리고 헤더 파일을 여러 파일에 포함 시킬때는 단 한번만 포함 시킬 수 있다.

    예를들어, 기존 struct.h파일을 제외한 헤더파일 new.h파일을 만들고 new.h파일에서 struct.h파일을 include하고  메인함수에서 include 한다면 오류가 발생한다. (struct.h를 두번 사용하는 것이기때문에 겹침)

    if not define을 지원한다. endif구문

    STRUCT라는 이름으로 묶인다. #define에 의해 정의되지않은경우 처리할수 있다.

    #ifndef STRUCT
    
    #endif

    ifndef와 endif를 사용하면

    main함수에 포함되고, new.h파일에서 include하려할때 이미 main함수에 정의되있기때문에 struct.h 파일에 있는 내용들은 무시된다.

    중복을 방지한다는 내용같다.

     

    'C++' 카테고리의 다른 글

    C++ 생성자와 소멸자  (0) 2025.03.29
    C++ 추상화와 클래스  (1) 2025.03.28
    C++ 함수 오버로딩과 템플릿  (0) 2025.03.26
    C++ 인라인 함수 및 디폴트 매개변수  (0) 2025.03.25
    C++ 함수(2)  (0) 2025.03.22
Designed by Tistory.