헤더파일이란?
.h 또는 .hpp 확장자를 가진 파일로, 클래스, 함수, 상수 등의 여러 선언을 포함한다.
지금은 간단한 파일들만 사용을 하지만 나중이 되면 많은것들을 사용하게 될텐데 이 때 유지보수및 재사용을 쉽게하기 위해서는 매 소스파일에서 정의를 할 수 없으니 헤더파일이라는 친구를 통해 선언을 하고 여러 소스코드에서 가져다 쓸 수 있게 할 것 이다.
헤더파일 사용방법!
headerex.h라는 파일을 만들어준다.
헤더가드
얘네들은 헤더가드라고 하는데 나도 모르게 비슷한 애들을 사용할 때 같은 이름을 사용하면 소스파일에서 어떤 헤더파일을 가져와야할지 헷갈려서 버그가 생길 수 있는데 그걸 방지해주는 역할이라고 보면 된다.
#ifndef (If Not Defined)
- 이 지시어는 뒤에 오는 매크로와 같은 이름이 정의되어 있지 않은 경우에만 다음 코드 블록을 포함하도록 지시합니다.
- #ifndef chan_H는 chan_H가 정의되어 있지 않으면 다음 코드를 실행한다는 뜻이다.
#define
- 위에서 통과버튼를 시켜줬으면 이제 여기서 매크로를 정의한다.
- #define chan_H는 chan_H라는 매크로를 정의한다는 뜻이다.
#endif:
- #ifndef로 시작한 조건문을 종료한다.
- 이 지시어는 #ifndef와 쌍을 이루어 사용되며, 해당 조건이 참일 때 포함된 코드 블록의 끝을 나타낸다.
파일을 어떻게 정리하는게 좋을까?
그렇다면 이제 파일을 어떻게 관리하는 게 좋을까?라는 생각이 들텐데 일단 구역을 나눠보도록 하겠다
- 헤더 파일 - 클래스, 변수 등등 각종 선언을 하는 파일
- 소스 파일 - 헤더파일에서 선언한 것들을 가지고 함수를 이용해 소스를 만드는 파일
- 메인 파일 - 사용자와 상호작용하는 파일
이렇게 3개로 나누는걸 추천한다. 왜 그런지 물어본다면 음식점에 비유해서 말해보려고 한다.
- 헤더파일 - 냉장고
- 재료 손질.
- 재료 보관.
- 소스파일 - 주방
- 조리.
- 메인파일 - 홀
- 손님께 음식 주문을 받음.
- 손님께 음식을 서빙함.
이렇게 보는데 요리가 나가는 순서를 비유해서 표현하자면
- 홀에서 주문을 받음 - 메인파일에서 입력 감지.
- 주방에 주문받은 요리 전달 - 소스파일에 함수가 필요해요 라고 전달.
- 요리사가 냉장고에서 필요한 식재료들을 꺼냄 - 소스파일이 헤더파일에서 선언된 변수들을 가져옴.
- 주방에서 식재료들로 조리해서 요리 완성 - 가져온 변수들로 계산을 해서 값을 함수에 반환함.
- 주방에서 홀에 요리 전달 - 반환된 값을 메인파일에 전달.
- 홀에서 손님께 서빙함 - 유저에게 입력에 따른 함수 값을 전달.
이렇게 볼 수 있다!
파일 예시
헤더파일
소스파일
메인파일
끝!!
'C++ > 개념정리' 카테고리의 다른 글
C++[스택 메모리, 힙 메모리] (0) | 2024.12.30 |
---|---|
C++[상속, 다형성] (0) | 2024.12.26 |
C++ [클래스, getter와 setter] (0) | 2024.12.25 |
C++[배열 선언, 배열 연산, 배열 입력](이번껀 메모장) (0) | 2024.12.23 |
C++ 기본[변수, 변수선언, 간단한 연산, 변수 값 입력] (0) | 2024.12.23 |