본문 바로가기

C++

[C++] 분할 구현

main.cpp

#include <stdio.h>

// 전역변수
int g_i = 0; // Data 영역

#include "func.h"

void Test();

int main()
{
	Test();
	Test();
	Test();

	g_i = 0;
	
	int data = Add(10, 20);

	return 0;
}

void Test()
{
	++g_i;
}

func.h

#pragma once

int Add(int a, int b);
int Sub(int a, int b);
int Mul(int a, int b);

func.cpp

#include "func.h"

int Add(int a, int b)
{
	return a + b;
}

int Sub(int a, int b)
{
	return a - b;
}

int Mul(int a, int b)
{
	return a * b;
}

-왜 분할을 해야 할까요?

관리적 문제 때문입니다. 모든 기능을 main에서 다 구현을 한다면.. 생각만해도 끔찍합니다. 이를 관리 하기 위해서는 다른곳에서  참조하여 필요한 기능을 사용할수 있어야 합니다.

 

-include ?

간단하게 다른 파일의 내용을 그대로 복사 붙여넣기 한다고 생각하면 편합니다. include "func.h"는 func.h의 내용을 그대로 복사해서 include 자리에 붙여넣기 하여 다른 파일의 내용을 가져올수 있습니다.

 

main.cpp 에서 Test() 함수의 모양만 위에 작성해 주고 아래 기능을 구현할수 있습니다. 이 방법을 다른 파일에 옮겨서 구현했다고 생각하면 됩니다. 

 

<문제점>

전역변수의 장점이 없어 집니다. 다른 파일에서 전역 변수에 접근 할 수가 없기 때문에 이를 해결하기 위한 다른 방법을 써야 합니다. 만약 헤더파일에 전역을 선언한다는 것은 헤더를 참조한 모든 파일에서 전역변수를 선언한다는 뜻임으로 관리의 문제도 있지만 링크의 문제도 있습니다. 중복 변수는 링크단계에서 오류를 발생시킵니다.