전체 코드

✅ 1. 파일 분할 관리란?

  • 하나의 소스 파일(.cpp)에서 모든 코드를 작성하면 프로젝트가 커질수록 관리가 어려워짐
  • 기능별로 파일을 분할하여 관리하면 유지보수 및 협업이 용이함
  • C++에서는 헤더 파일(.h)소스 파일(.cpp)을 분리하여 관리하는 것이 일반적

📌 2. 헤더 파일(.h)과 소스 파일(.cpp)의 역할

파일 유형역할
헤더 파일(.h)함수 및 클래스의 선언부(인터페이스)
소스 파일(.cpp)함수 및 클래스의 구현부(구체적인 실행 코드)
메인 파일(main.cpp)프로그램 실행을 담당하며 필요한 헤더 파일을 포함

📌 3. #pragma once 와 헤더 가드

💡 중복 포함 방지 기법

#pragma once
  • 헤더 파일이 중복 포함되는 것을 방지하는 전처리 지시문
  • #ifndef ~ #define ~ #endif 방식보다 간편하고 직관적
  • 최신 컴파일러에서는 성능적으로 더 유리한 경우가 많음
#ifndef _TEST1_H__
#define _TEST1_H__

// 헤더 파일 내용

#endif // _TEST1_H__
  • 전통적인 헤더 가드 방식
  • #ifndef(define이 안 되어 있으면) → #define으로 선언하여 중복 포함 방지
  • #pragma once와 역할은 같지만, 모든 컴파일러에서 지원되지는 않음

📌 4. 예제 코드 - 파일 분할 관리

✅ 4.1 Test1.h (헤더 파일)

#pragma once  // 중복 포함 방지

#include <iostream>  // 표준 입출력 라이브러리 포함

using namespace std;  // std 네임스페이스 사용

struct StatInfo  // 캐릭터의 상태 정보 구조체
{
    int hp;
    int attack;
    int defence;
};

void Test_1();  // 함수 선언
void Test_2();  // 함수 선언
void Test_3();  // 함수 선언

📌 설명

  • #pragma once를 사용하여 중복 포함을 방지
  • StatInfo 구조체는 캐릭터의 상태 정보를 저장 (hp, attack, defence)
  • Test_1(), Test_2(), Test_3() 함수 선언 (구현은 Test1.cpp에서 진행)

✅ 4.2 Test1.cpp (소스 파일)

#include "Test1.h"  // 헤더 파일 포함

void Test_1()  // 함수 정의
{
    Test_2();  // Test_2 함수 호출
}

void Test_2()  // 함수 정의
{
    cout << "Hello World" << endl;  // "Hello World" 출력
}

void Test_3()  // 함수 정의 (현재는 빈 함수)
{
}

📌 설명

  • Test1.h를 포함하여 함수 선언을 가져옴
  • Test_1() 함수에서 Test_2()를 호출
  • Test_2() 함수는 "Hello World"를 출력
  • Test_3()은 현재 아무 동작도 하지 않음

✅ 4.3 main.cpp (메인 파일)

#include "Test1.h"  // Test1 헤더 파일 포함
#include <iostream>  // 표준 입출력 라이브러리 포함

using namespace std;

int main()
{
    Test_2();  // Test_2 함수 호출 ("Hello World" 출력)
    return 0;  // 프로그램 종료
}

📌 설명

  • Test1.h를 포함하여 Test_2()를 호출
  • Test_2()"Hello World"를 출력
  • return 0;을 통해 정상적으로 프로그램 종료

📌 5. 헤더 가드(#ifndef) VS #pragma once 비교

방식설명장점단점
#pragma once컴파일러가 한 번만 포함하도록 처리간단하고 빠름일부 구식 컴파일러에서 지원되지 않음
#ifndef ~ #define ~ #endif직접 중복 포함 여부를 체크하여 처리모든 컴파일러에서 지원됨코드가 길어질 수 있음
  • 최신 프로젝트에서는 #pragma once를 선호 (더 간결하고 빠름)
  • 구식 컴파일러를 고려해야 한다면 #ifndef ~ #endif 사용

📌 6. 파일 분할 관리의 이점

코드 재사용성 증가
협업 및 유지보수 용이
컴파일 시간 단축 (불필요한 재컴파일 방지)
가독성 향상 (코드가 논리적으로 분리됨)


profile
李家네_공부방

0개의 댓글