-
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