본문 바로가기

내가 꾸는 꿈

헤더파일, 소스파일 [노베이스 게임개발 9일차]

반응형

오늘은 헤더파일과 소스파일에 대해서 알아보았다.

 

헤더파일 : 소스파일의 첫 부분으로 함수의 원형이나 사용할 변수 및 다양한 선언을 하는 부분

 

오늘은 지금껏 모르고 써왔던 구문 하나하나를 배워가는 시간이었다.

#include : 뒤에 나오는 헤더파일의 코드를 복사 붙여 넣기 해주는 구문이다.

뒤에 <>로 나오는 구문들이 헤더파일이라고 부르는 것들이었다.

그 종류도 다양한데 일부 소개를 하면

 

<cstdio> : 표준 입출력 헤더, printf나 scanf 등이 포함되어 있음
<cmath> : 수학 관련 함수들이 포함되어 있는 헤더파일, sin(), cos(), tan(), exp(), pow(), log()등이 있음
<cstdlib> : 메모리 관련 함수가 포함되어 있음. malloc() : 동적 메모리를 할당, rand() : 난수 생성 함수.
<ctime>  :  시간 관련 함수가 포함되어 있음.

 

그중 예시를 들어 코드를 하나 작성해 보면 pow()를 이용하여 제곱을 sin을 이용해서 sin값을 출력해 보았다.

그전과 똑같이 printf를 이용해서 출력했고 %f를 이용해서 pow값을 불러왔다.

그리고 2의 10승을 계산했다.

그다음 sin을 이용해서 π/2를 출력했다.

 

 

각각 결과값인 1024와 sin(π/2)의 값인 1이 출력이 되었다.

 

그다음으로는 난수 형성을 해보았다.

난수는 우리가 보통 아는 랜덤으로 수를 정해주는 것을 말한다.

제일 먼저 printf("%d", rand());만을 썼을 때 결과는 랜덤이 아닌 하나의 수만 출력이 된다.

그 이유는 시드가 고정되어 있기 때문인데 이를 해결하기 위해 srand(time(0));구문을 넣어주면 된다.

이 구문은 현재 시간을 가져와서 시드가 계속해서 바뀌도록 만들어서 난수가 형성될 수 있게 도와준다.

거기에 rand() 뒤에 %10을 넣어주면 나머지를 이용해서 0~9까지의 수 중에서 랜덤으로 수를 만들어 준다.

그렇게 되면 이런 식으로 출력할 때마다 수가 계속 변한다.

 

나머지 헤더파일들은 추후 연습문제와 강의를 통해 심층적으로 배울 예정이다.

지금은 이런 게 있구나 하고 기억만 해주면 된다.

 

그다음으로 알아본 것은 사용자 정의 헤더이다

사용자 정의 헤더 : 보통 여러 개의 소스코드로 만들어지는데 이런 소스코드를 묶어줄 수 있게 해 준다.

 

앞에서 본 것처럼 코드 맨 위에 #include~~~ 가 여러 개 놓여 있는데 이걸 한데 묶어서 하나의 구문으로 출력할 수 있게 만들어 주는 것이 사용자 정의 헤더이다.

 

위의 그림처럼 헤더파일을 하나 만들어 준 후에 여러 헤더들을 입력해 준다.

 

그 후 소스파일에 #include "header.h"로 파일명을 입력해 주면

정상적으로 프로그램이 작동하는 것을 관찰할 수 있다.

 

사용자 정의 헤더는 이뿐만이 아니라 함수의 원형도 입력할 수 있는데

만약 메인함수 뒤에 추가적인 함수를 만든다면 실행이 되지 않을 것이다.

 

이를 해결하기 위해 header.h 파일에 함수의 원형을 넣어준다면?

 

 

그림처럼 add함수의 원형을 header.h 파일에 넣어준 후 파일을 실행시킨다면 정상적으로 실행되게 된다.

 

후기:

이제 강의의 기본적인 내용이 끝이 났다.

다음챕터부터 본격적으로 나가게 될 텐데 처음엔 배우는 것이 조금 어려웠지만 이제는 익숙해지면서 다음엔 뭘 배울까 궁금해져서 얼른 다음 강의를 듣고 싶게 되었다.

 

 

 

*본 포스팅은 학생의 입장에서 쓴 글로 정확하지 않을 수 있으며 댓글로 피드백해 주시면 감사하겠습니다.

클래스 101 개발자 라라 님의 강의를 통해 학습한 내용을 기반으로 두고 있습니다.

반응형