본문 바로가기

C언어

c언어 6 (헤더파일 / 소스파일)

헤더파일 

: 소스 파일의 첫 부분

함수의 원형이나 사용할 변수 및 다양한 선언을 하는 부분

 

CPP files (소스파일) -----참조------- H file (헤더파일)

: 소스파일들은 헤더파일들을 참고하며 헤더파일들은 각각의 소스파일과 연결되어 있고

이 연결된 파일들은 컴파일이 되어있을 수도 있고 실제 소스파일일 수도 있다.

 

#include..

작성된 헤더파일에 존재하는 코드를 모두 복사붙여넣기 하는 구문

그 외의 특별한 것은 없으나

이로 인해 C++는 시스템 함수를 사용할 수 있게 된다. 

 

이 include구문이 무슨 대단한 일을 하는 내용은 아니다.

이 헤더파일은 실제로 어떤 소스코드의 동작을 하는게 아니라 일종의 초안문서라고 볼 수 있다.

이 초안문서들은 각각의 CPP파일 즉 소스파일을 단순히 기계적으로 복사-붙여넣기가 되며

실제로 몸체를 갖고있는 소스코드나 실행파일들이 연결되게 해주는 역할을 할 뿐이다.

 

#include <cstdio>

: 표준 입출력 헤어

콘솔 입출력과 파일 입출력에 관한 함수들이 포함된다

 

printf(...), scanf(...), fseek(...), fopen(...), ...

 

cstdio는 표준 입출력 함수들이 모여있는 헤더파일이다.

이 cstdio 파일을 include 하지 않으면 printf나 scanf의 함수들을 사용할 수 없다.

 

include <cstdio>를 함으로서 printf라는 함수의 동작 몸체가 이 시스템 어딘가에 있는데

그 시스템과 연결되게 해주는 역할을 하게 되는 것

 

<> : 표준 C/C++ 라이브러리 헤더를 포함할 때 사용

" " : 사용자가 직접 생성한 헤더파일을 포함할 때

 

 cstdio 헤더파일은 표준 입/출력에 대한 함수들의 선언과 각종 변수, 상수(프로그램 내부에서 절대 변하지 않는 값)를 알려주는 헤더파일입니다

이 변수나 상수, 함수들은 헤더파일에 존재하는 것이 아닌 우리가 사용하는 컴퓨터 시스템 어딘가에 존재하고 있고, 우리는 그 존재하는 함수나 변수를 사용할 수 있게 헤더파일을 include 구문을 통해 가져오는 것이죠

 

# <cmath> 헤더파일

: 수학 연산 관련 함수를 포함

sin(...), cos(...), pow(...), log(...), ...

수학 관련 함수 / 상수 / 변수 등을 포함

 

 

#include <cstdlib>

: 각종 활용할 수 있는 라이브러리 함수들을 포함

malloc(...) : 동적 메모리를 할당한다.

free(...) : 동적 메모리를 해제한다.

rand(...) : 난수를 생성한다. 

 

cstdlib 헤더파일은 메모리 관련, 랜덤 관련, 확장 기능 함수 / 상수 / 변수 등을 포함

 

 

#include <ctime>

: 시간 관련 함수를 포함

이 헤더는 cstdlib과 함께 의사난수 시드를 설정하는 용도로 많이 쓰임

clock() : 현재 클럭을 가져온다

time(...) : 시간을 가져온다.

 

c++ 표준 라이브러리  = c 표준 라이브러리

// cstdio = stdio.h

// cstdil = stdio.h

// cstdlib = stdlib.h

// ctime = time.h

 

사용자 정의 헤더

사용자 정의 헤더 파일을 생성하여 사용할 수 있고 이를 위해 헤더파일과 소스파일을 나누어 함수의 선언과 정의 부분을 나누어서 코드를 작성하는 방법을 살펴 보게 됩니다. 이렇게 굳이 나누어서 만드는 이유는 프로그램이 커지게 되면 커지게 될수록 하나의 소스코드로 프로그램을 작성하기 어려워지기 때문입니다. 다른 프로그래머와 협업을 해야 하기도 하고, 하나의 소스코드가 필요 이상으로 길어지게 되면 읽는데도 좋 지 않습니다. 지금은 여러 개의 헤더파일과 소스파일을 사용하지는 않지만 앞으로는 그렇게 만들게 될 것이고, 이를 위해 이번 시간에는 간단하게 헤더파일과 소스파일을 나누는 방법만 알아봅니다