(C++) 1.10 헤더파일 만들기 & 헤더 가드란 무엇인가?

이준우·2021년 10월 5일
0

프로그래머의 고수가 되려면 코드를 잘 짜는 것도 중요하지만, 얼마나 헤더파일을 잘 활용하는지도 중요하다. 객체 지향과 헤더파일을 만들어서 사용하는 것이 완전 다를 수 있겠지만, 그래도 어떻게 보면 살짝 비슷한 느낌이 들긴한데(?) 아님 말고~

헤더파일을 어떻게 만들고 어떤 식으로 사용하는지에 대해 알아볼 것이다.

이제 막 시작한 초보자들은 이렇게 코드를 짜게 된다. 하지만 이 add()같은 경우에는 나중에도 많이 사용할 수 있으므로 이러한 기능은 헤더파일에 보관하여 필요할 때마다 사용하는 것이 매우 편리하다.

우선 add.cpp파일을 만들어 주도록 하자 이 add.cpp파일에 이 add.cpp파일에 add() Code를 넣어주자 그리고 위의 사진 처럼 Project에서 Header Files에서 add.h파일을 만든 후에 위의 그림처럼 코드를 입력하면 된다. 앞에서 배웠던 선언 부분을 헤더파일에 넣어준다고 생각하면 된다. #pragma once같은 경우에는 헤더 가드라고 한다.
#pragma once

#ifndef MY_ADD
#define MY_ADD

contents~~~~~~~~`

#endif 

같은 역할을 한다고 보면 된다. 만약 헤더 가드 없이 헤더파일을 만들면 무슨 일이 벌어질까? 실험해보자.

#include <iostream>
#include "my_work.h"
using namespace std;

int main()
{
	doSomething();

	return 0;

}

이런식으로 실행하면 전혀 문제가 없다. 하지만 #include "add.h"를 넣어주면 무슨 일이 발생할까?
이런 오류가 발생한다. 즉, add()이 있는데 왜 또 add()이 있냐는 얘기인데 이게 무슨말이냐면, my_work.h파일은 이미 add.h의 내용을 포함한다. 따라서, my_work.h파일을 불러오면 이미 doSomething()add()를 갖고 온 것이다. 근데 또 #include "add.h"통해 add()를 갖고 오면 다음과 같다.
같은 함수가 2개 있게 되버리는 것이다. 실행을 시키면 당연히 error을 발생시킨다. 이러한 문제를 해결하기 위하여 #pragma once인 헤더 가드를 사용한다. #pragma once이미 선언되어 있다면 무시하라는 뜻을 갖고 있는 것이다!따라서 USER 같은 경우 이를 없애지 말고 그냥 사용하는 것이 맘 편하다~

이게 또 프로그래머마다 다를 순 있겠지만, 헤더파일 내에 code를 입력하는 경우도 있다. 이건 프로그래머마다 다른 것이라 뭐라 단정지을 순 없지만, 편한대로 사용하도록 한다.

profile
꿈꾸는 CV

0개의 댓글