소프트웨어/C 언어

[C언어]18. 헤더파일이란 무엇인가 ( 헤더파일을 만드는 법 )

리습 2013. 6. 6. 08:00


 안녕하십니까. 리습입니다.



  지금까지 프로그램을 만들면서 간단한 기능은 만들거나 #include 를 이용해서 헤더파일을 불러오는 방식으로 새로운 기능을 쓸 수 있었습니다. 하지만 아직 헤더파일이 어떤것인지 잘 알고 있지 못합니다. 필요한 기능이 있다면 손쉽게 불러와 사용하던 헤더파일. 이번시간엔 헤더파일에 대하여 알아보도록 하겠습니다.

 헤더파일은 메뉴판이다.

 

 


우리가 음식점에 가게되면 처음 보는 것은 메뉴판입니다. 처음 음식점에 가게되면 어떤 음식이 있는 지도 모르고 어떻게 나올지도 모르기때문에 메뉴판을 보고 음식을 고르게됩니다. 그리고 종업원에게 선택한 음식을 말해주게 되죠. 이런 과정은 음식점의 입장에서도 소비자의 입장에서도 매우 좋습니다. 메뉴판만 있다면 다른 부가적인 설명이나 표현을 안해도 된다는 것이죠. 결론적으로 매우 편리합니다. 그래서 프로그래밍에서도 이런 편리한 메뉴판을 사용하기 위해 만든것이 바로 헤더파일입니다. 

 

 평소에도 우리는 헤더파일을 사용하였습니다. stdio.h 가 바로 헤더파일이죠. 이 헤더파일을 사용하므로써 헤더파일이라는 메뉴판에 적여있는 메뉴, 즉 여러가지 함수를 사용할수 있게 되었던것입니다. 예를 들어 우리가 지금까지 사용했던 printf 함수는 stdio.h 헤더파일에 선언되어 있는 함수입니다. 즉 stdio.h 헤더파일을 선언하지 않으면 사용할 수 없는 기능이라는 것이이지요.

 


< stdio.h 의 printf 선언, 앞뒤로 붙는 것들은 나중에 알아갈것이다. > 

 

 즉 C언어에서 내부적으로 지원을 해주는 키워드를 제외한 모든 것들은 헤더파일에서 가져온다는 것입니다. 

 

 그럼 이러한 헤더파일을 우리는 어떻게 만들고 사용해야할까요?  한번 예를 보도록 하겠습니다. 

 

 코드

 

  int sum ( int a , int b );

 

  int main( void )

 {

        int result = sum ( 3 , 4 );

        return 0;

}

 

int sum ( int a , int b )

{

     return ( a + b );

}

  


  간단한 프로그램을 작성해 보았습니다. 맨위 int sum ( int a , int b ); 는 내가 사용하고 싶은 새로운 함수의 원형를 써준 것이고 메인함수 다음 뒤에 있는 함수가 본 기능을 구현한 형태입니다. 더하기를 사용하기 위해서 sum 이라는 함수를 새로 만들어 낸것입니다. 
 
 그런데 이렇게 간단한 한개의 함수만을 만들어 쓴다면 하나의 cpp 파일에 이정도로 만들어도 되겠지만 실제 프로그래밍을 할 때에는 수많은 함수를 만들게 됩니다. 저렇게 만들어 쓴다면 가독성에도 매우 좋지 못하고 비효율적이 되죠. 때문에 .h 헤더 파일을 새로 만들게 되는 것입니다. 헤더파일과 헤더파일을 설명하는 cpp파일을 만들어보도록 하겠습니다.

 main.cpp

 head.h

 head.cpp

 

 #include "head.h"

 int main( void )

 {

        int result = sum ( 3, 4 );

        return 0;

}

 

  int sum (int a , int b ); 

  int sum (int a , int b )

 {

      return ( a + b );

}


 하나의 cpp파일로 되어있던 프로그램을 3개의 cpp 파일로 나누었습니다. 기능별로 확실하게 파일이 나누어져있으며 기능을 매우 정확하게 보기 좋습니다. 또한 파일이 따로따로 나누어져 있기 때문에 여러사람이 분업을 해서 만들기 더욱더 좋아졌습니다. 헤더파일과 메인파일을 제외하고 만든 세번째 cpp파일은 헤더파일에 선언되어있는 함수의 기능을 구현한 파일입니다. 여러가지 이유로 헤더파일에 선언한 함수들은 그 기능을 다른 cpp에 구현합니다. 절대로 head.h안에 적어주면 안됩니다. 이유는 나중에 컴파일러가 이런 파일들을 어떻게 처리하는지 알아보면서 설명드리겠습니다. 또한 우리가 만든 헤더파일을 불러올때는 include " "를 사용합니다.

이렇게 헤더파일을 만들면 이점이 많습니다. 마치 메뉴판과 같습니다. 메인에서 실제 프로그램을 작동하도로 만드는 사람은 단순히 기능을 새로 추가할때 헤더파일만을 불러오면 됩니다. 헤더파일에 선언되어있는 함수들을 그냥 불러오면 되기 때문에 매우 편리합니다. 또한 기능을 만드는 사람은 단순히 헤더파일과 그에따른 cpp파일을 만든다면 기능을 만들수 있는 것이기때문에 여러가지 프로그램을 만드는데 사용할수 있습니다. 

 비쥬얼 스튜디오를 기준으로 나누어준 3개의 코드를 작성해보도록 하겠습니다. 
 
 우선 헤더파일을 작성합니다. 
왼쪽 솔류션 탐색기의 헤더파일에서 추가 -> 새항목 으로 들어갑니다. 


헤더 파일을 클릭하고 이름에 head.h를 입력합니다. 

헤더파일에 코드를 작성합니다.

마찬가지로 소스파일을 오른쪽 클릭하고  추가->새항목 을 클릭해줍니다.


  C++파일을 클릭해주고 이름으로 head.cpp를 입력합니다.


 마찬가지로 코드를 작성해줍니다.




소스파일에  head.cpp를 만들듯이 main.cpp를 만들어주고 코드를 작성합니다.  정상적으로 컴파일이되고 작동을 한다면 잘 만드신겁니다.



이렇게 우리는 헤더파일이 무엇이고 어떻게 만들고 사용하는지 알아보았습니다. C언어 및 여러 컴파일러에서 제공해주는 헤더파일은 수백가지가 넘습니다. 정말 다양한 종류의 기능을 이미 만들어져있고 우리는 사용하기만 하면 된다는 것이지요. 하지만 우리에게 꼭 잘 맞는 함수는 만들 필요가 있습니다. 헤더파일을 어떻게 만들고 사용하는지에 대하여 잘 알아두시기 바랍니다.