C++/개념정리

C++[헤더파일, 파일관리]

jeongchanhyo 2024. 12. 26. 00:26

헤더파일이란?

.h 또는 .hpp 확장자를 가진 파일로, 클래스, 함수, 상수 등의 여러 선언을 포함한다.

지금은 간단한 파일들만 사용을 하지만 나중이 되면 많은것들을 사용하게 될텐데 이 때 유지보수및 재사용을 쉽게하기 위해서는 매 소스파일에서 정의를 할 수 없으니 헤더파일이라는 친구를 통해 선언을 하고 여러 소스코드에서 가져다 쓸 수 있게 할 것 이다.

 

헤더파일 사용방법!

headerex.h라는 파일을 만들어준다.

헤더가드

얘네들은 헤더가드라고 하는데 나도 모르게 비슷한 애들을 사용할 때 같은 이름을 사용하면 소스파일에서 어떤 헤더파일을 가져와야할지 헷갈려서 버그가 생길 수 있는데 그걸 방지해주는 역할이라고 보면 된다.

#ifndef (If Not Defined)

  • 이 지시어는 뒤에 오는 매크로와 같은 이름이 정의되어 있지 않은 경우에만 다음 코드 블록을 포함하도록 지시합니다.
  •  #ifndef chan_H는 chan_H가 정의되어 있지 않으면 다음 코드를 실행한다는 뜻이다.

#define

  • 위에서 통과버튼를 시켜줬으면 이제 여기서 매크로를 정의한다.
  • #define chan_H는 chan_H라는 매크로를 정의한다는 뜻이다.

#endif:

  • #ifndef로 시작한 조건문을 종료한다.
  • 이 지시어는 #ifndef와 쌍을 이루어 사용되며, 해당 조건이 참일 때 포함된 코드 블록의 끝을 나타낸다.

파일을 어떻게 정리하는게 좋을까?

그렇다면 이제 파일을 어떻게 관리하는 게 좋을까?라는 생각이 들텐데 일단 구역을 나눠보도록 하겠다

  1. 헤더 파일 - 클래스, 변수 등등 각종 선언을 하는 파일
  2. 소스 파일 - 헤더파일에서 선언한 것들을 가지고 함수를 이용해 소스를 만드는 파일
  3. 메인 파일 - 사용자와 상호작용하는 파일 

이렇게 3개로 나누는걸 추천한다. 왜 그런지 물어본다면 음식점에 비유해서 말해보려고 한다.

  1. 헤더파일 - 냉장고
    • 재료 손질.
    • 재료 보관.
  2. 소스파일 - 주방
    • 조리.
  3. 메인파일 - 홀
    • 손님께 음식 주문을 받음.
    • 손님께 음식을 서빙함.

이렇게 보는데 요리가 나가는 순서를 비유해서 표현하자면

  1. 홀에서 주문을 받음 - 메인파일에서 입력 감지.
  2. 주방에 주문받은 요리 전달 - 소스파일에 함수가 필요해요 라고 전달.
  3. 요리사가 냉장고에서 필요한 식재료들을 꺼냄 - 소스파일이 헤더파일에서 선언된 변수들을 가져옴.
  4. 주방에서 식재료들로 조리해서 요리 완성 - 가져온 변수들로 계산을 해서 값을 함수에 반환함.
  5. 주방에서 홀에 요리 전달 - 반환된 값을 메인파일에 전달.
  6. 홀에서 손님께 서빙함 - 유저에게 입력에 따른 함수 값을 전달. 

이렇게 볼 수 있다! 

파일 예시

헤더파일

소스파일

메인파일

 

끝!!