본문 바로가기
기계공학부 시절의 기록/C++일기

1.10~ 1.11 함수파일쪼개기, 헤더파일 만들기

by juhyeonglee 2021. 5. 2.
728x90
반응형

제가 빠르게 복기하기 좋게 정리한 글입니다. 파일을 추가하는 세세한 방법과 과정은 마지막에 첨부된 영상으로 확인하시면 좋을 것 같습니다 :) 강의목차의 번호와 같은  목차번호를 사용하고 있으니 참고하세요!

 


 

매우 긴 코드. 매우많은 함수가 있는 상황에서 main함수는 저 뒤에 있어 보이지도 않고 함수들만 보일 때, 함수를 저멀리 뒤로 보내고 main함수를 앞으로 불러오는 대신에 선언과 정의를 구분하여 코드를 정리할 수 있다.

1.10 선언과 정의 분리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
//forward declaration 
int add(int a, int b);
int multiply(int a, int b);
 
int main()
{
    cout << add(12<< endl;
    cout << multiply(15<< endl;
 
    return 0;
}
 
//definition
int add(int a, int b)
{
    return a + b;
}
 
//definition
int multiply(int a, int b)
{
    return a * b;
}
cs

1. main함수를 제일 위로 올린다.

이 때 실행하면, 오류가 발생하는데, main함수에서 add함수를 찾을 수 없기 때문. 컴파일러는 위에서부터 차례로 읽기시작한다. main함수보다 밑에 있는 함수는 없는 것으로 인식하게 된다.

2. 이를 고려해 함수의 입출력 형태(prototype)만을 가져와 위에서 이러이러한 함수가 있음을 선언해준다.

 

그럼에도! 코드가 복잡해지고 길어졌을 때 파일을 쪼개야할 때가 있다.

 

# 파일쪼개기

프로젝트 하위 소스파일에 함수를 저장할 cpp파일을 생성
왼) main.cpp 오)add함수.cpp

이렇게 함수만을 따로 떼어내어 소스파일을 만들고 main함수 위에 함수선언을 통해서 다른파일의 함수를 활용할 수 있다.

 

사실, 이 방법 보다는 헤더파일을 만들어 #include하는 경우가 더 많다.

 

 

 

 

1.11 헤더파일 만들기

상황 : 복잡한 코드, 함수의 내용이 매우 길어 함수를 메인파일에 넣을 경우 가독성이 현저히 떨어는 상황

해결방법 : 비슷한 기능의 함수들을 따로 모아 하나의 (헤더)파일로서 빼두고 메인파일에서는 헤더파일을 이용해 함수들을 사용한다. 

 

# 방법

함수를 담은 cpp파일을 추가로 만들고

선언문들을 담은 header파일을 만든다.

main.cpp파일로 돌아와서는 간단히 #include "add.h"을 추가하면 본문에서 함수이름을 불러와 쓸 수 있다.

헤더파일 하위파일로 add.h를 추가. 이곳에 main함수의 함수선언을 가져올 것이다.
main.cpp에서 함수선언을 cut

 

add.h(헤더파일)에 함수선언문 paste
main.cpp에서 #include "add.h"추가

현업에서는 가장먼저 함수몸체를 담은 cpp파일과 선언문을 담은 header파일을 만들어 놓고 시작한다고 한다.

 

 

 

 

 

 

 


 

출처)

홍정모의 따배씨++

www.youtube.com/playlist?list=PLNfg4W25Tapw5Yx4yuExHNybBIUk68aNzwww.youtube.com/watch?v=ctaMu3XplPI

 

 

좋은 강의에 너무나 감사하다.

이전에는 그냥 무작정 따라썼던 코드들을 한줄한줄 이해하며 공부할 수 있다.

언젠가 어느 언어든 자신감이 있는 코드마스터가 될 것이다.

 

데이터가 인간을 대신해 일을 하게하고

데이터를 제어해 로봇을 제어하고 싶다.

 

'아앙의 전설'에서 주인공은 물/불/흙/공기 원소를 자유자재로 다룬다.

수많은 데이터가 넘실대는 현대에서는 데이터를 자유자재로 다루는 프로그래머.

실력있는 프로그래머가 되기 위해서는 코드 한줄이 내부적으로 어떻게 작동되는지를 이해해야한다.

728x90
반응형

댓글