여행을 개발하다

Header, Heaer File(헤더 파일) 본문

BackEnd/C++

Header, Heaer File(헤더 파일)

yhtragramming 2019. 5. 7. 23:50

안녕하세요!

오늘은 본격적인 프로그래밍을 하기 위해 필요한 '헤더(Header)'에 대해서 설명드리겠습니다.

 

'헤더(Header)'란, 파일에 대한 정보를 실어놓은 부분을 말합니다.

따라서, 어떤 함수를 사용하느냐에 따라 포함해야 하는 헤더가 달라집니다.

이해를 돕기 위해 잠시 Python으로 돌아가보겠습니다.

 

Python에서는 내장 함수나 사용자 정의 함수를 사용하기 위해서는,

'있는 그대로를 호출'하기만 하면 되었습니다.

예를 들어, print("text") 라는 명령을 실행한 결과 값은 "text"가 쉽게 나타납니다.

 

하지만 프로그래밍 언어의 시초이자 시작점인 C계열의 언어는

명령어 및 함수를 정의하고 있는 별도의 파일을 프로그래밍 자체에 포함하고, 언급해줘야 합니다.

이 역할을 하는 것이 바로 'Header(헤더)'입니다.

 

헤더는 프로그래머가 C++언어를 사용할 때마다 포함시키고 사용할 수 있지만,

반복하다보면 번거로운 작업이 될 뿐입니다.

 

그래서 사용 우선순위와 빈도에 따라 필요한 헤더는 미리 모아 뭉치로 만들고,

그것들을 필요할 때마다 불러쓸 수 있는데,

필요한 헤더를 뭉치를 모아 파일로 저장한 것이 바로 'Header File(헤더 파일)'입니다.

 

*** 다음은 대표적인 헤더의 종류입니다 ***

 

* stdio.h (Standard Input Output)

- 표준 입출력에 관련된(파일 입출력 포함) 함수들을 정의.

 

* math.h

- abs(), pow(), sqrt() 등의 수학 관련 함수를 정의.

 

* stdlib.h (Standard Library)

- 표준 라이브러리. 유용하게 쓰일 수 있는 난수함수{srand(), rand()}나malloc()등을 정의.

 

* time.h

- 시간에 관한 함수들이 정의되며, 난수 생성 함수인 srand(), rand() 등과 함께 사용된다.

 

* string.h

- 문자열에 관련된 함수들이 정의되어 있다.

 

앞으로 포스팅을 할 때 사용할 함수들이 신규 헤더를 필요로 할 경우에는,

첫 문단에 언급하고 시작하도록 하겠습니다.

 

물론 모든 헤더를 다 알고 프로그래밍을 하는 것이 가장 이상적이기는 하지만,

필요할 때는 간단하게 구글링 하시면 됩니다 : )

 

물론, 헤더를 불러올 때도 몇 가지 규칙이 있습니다.

이 규칙을 어기면 C++은 ERROR가 발생하며, 제 기능을 수행하지 못하게 됩니다.

 

위 사진은 헤더를 불러올 때 사용하는 코드입니다.

 

#include <stdio.h>

#include <iostream>

 

공통적인 부분이 보이시죠?

바로 '#include'입니다.

 

여기서 도출 되는 규칙은 다음과 같습니다.

 

규칙 1. #include 헤더명

소스 파일 안에 헤더를 포함해야 한다.

ex) #include <stdio.h>

 

규칙 2. "<>", " "

시스템이 제공하는 헤더 파일은 "<"와 ">" 사이에 입력하고,

사용자 정의 헤더 파일은 큰따옴표 사이에 입력한다.

ex) #include <iostream> (C++ 자체에 내장되어 있는 헤더)

ex) #include "config.h" (사용자가 정의한 헤더파일을 만들어 별도로 사용하는 경우)

 

규칙 3. 헤더 파일의 위치 지정

cf 1) (사용자 정의 헤더 파일)과 (사용자 정의 헤더 파일을 사용하는 소스 프로그램)이

같은 폴더에 있을 경우, 큰 따옴표("")로 묶어준다.

 

cf 2) (사용자 정의 헤더 파일)과 (사용자 정의 헤더 파일을 사용하는 소스 프로그램)이

다른 폴더에 있을 경우, 사용자 정의 헤더 파일이 위치한 경로명을 적어줘야 한다.

ex) #include "C:\\Users\\Administrator...\\config.h"

 

규칙 4. 경로 지정 방법

경로 지정 방법은 절대 경로 지정 방법상대 경로 지정 방법이 있습니다.

 

* 절대 경로 지정 *

@ 파일이 위치한 디스크의 root 디렉터리(폴더)부터 파일이 위치한 디렉토리까지의 경로

@ 디렉터리와 디렉터리, 디렉터리와 파일을 "\" 두 개로 구분한다.

ex) #include "C:\\Users\\Administrator\\... \\config.h"

 

* 상대 경로 지정 *

@ 현재 화면에 보이는 소스 파일이 위치한 디렉토리부터, 헤더 파일이 위치한 디렉토리까지의 경로

@ 현재 화면에 보이는 소스 파일이 위치한 디렉토리를 "."으로 표현한다.

rf) Java는 .의 위치가 프로젝트명이고, C++은 .의 위치가 파일 디렉터리

ex) #include "C:/Users/Administrator/Desktop/C/0312/0312/include/config.h"

 

지금까지 헤더의 정의와 헤더파일의 사용법에 대해 알아보았습니다.

다음 포스팅에서는 C++언어의 기본구조와 printf에 대해 포스팅하겠습니다 : )

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

연산자(Operater)  (0) 2019.05.08
표준 입출력 함수(printf)  (0) 2019.05.08
변수(variable)  (0) 2019.05.07
C++ 언어의 기본 구조, 주석(Comment), 솔루션 빌드 및 실행  (0) 2019.05.07
C ++ 작업 환경 구축  (0) 2019.05.07
Comments