컴퓨터 프로그래밍
에서, 特히
C
와
C++
프로그래밍 言語에서,
헤더 파일
(header file) 또는
人클루드 파일
(include file)은
컴파일러
에 依해 다른 소스 파일에 自動으로 包含된
소스 코드
의
파일
이다. 一般的으로 헤더 파일들은 다른 소스 파일 속의 첫 部分에 包含된다.
C와 C++ 프로그래밍 言語에서,
標準 라이브러리
函數는 傳統的으로 헤더 파일 안에서 宣言되어 있다.
C 標準 라이브러리
와
C++ 標準 라이브러리
에 많은 函數들이 存在한다. 函數들은 使用者가 API 水準에서 알아야 한다. 따라서 開發 道具를 만드는 立場에서, 函數 自體를 設計하고 코딩을 한 側에서 提供해야 한다. 라이브러리 오브젝트 코드는 파일로 存在하고 헤더 파일에 函數나 變數의 兄이 宣言되어 있으므로 使用者 側에서 붙여 使用하면 된다. 使用者 側에서 使用한 라이브러리는 라이브러리 파일의 코드를
링커
가 應用 프로그램에 붙여 全體 實行 코드가 完成된다. 結局 헤더 파일의 兄을 使用하여 라이브러리 使用者의 人클루드에 依해 函數 呼出이 方式이 決定된다.
C/C++ 헤더 파일 使用 예
[
編輯
]
代表的으로 C言語에서 많이 使用하는 printf函數는 stdio.h 標準 라이브러리에 存在한다.
#include
<stdio.h>
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"出力 函數 使用 예
\n
"
);
return
0
;
}
여기서 實時間 라이브러리 函數 printf 코드는 라이브러리 파일에 存在하고, stdio.h 헤더 파일에 兄이 宣言 되어 있다.
헤더 파일의 가장 一般的인 形態는 다음과 같은 例에서 볼 수 있다.
헤더 파일
|
實時間 函數
|
메인 函數
|
// 파일: MyFunc.h
#ifndef _MYFUNC_H
#define _MYFUNC_H
// 函數의 兄을 宣言하여 呼出 時,
// 引受의 形態를 알린다.
//
int
add
(
int
a
,
int
b
);
#endif
|
// 파일: MyFunc.c
#include
"MyFunc.h"
int
add
(
int
a
,
int
b
)
{
int
c
;
c
=
a
+
b
;
return
c
;
}
|
// 파일: main.c
#include
<stdio.h>
#include
"MyFunc.h"
int
main
(
int
argc
,
char
*
argv
[])
{
int
c
=
add
(
10
,
20
);
printf
(
"10 + 20 = %d
\n
"
,
c
);
return
0
;
}
|
헤더파일에서는 使用하는 코드는 兄을 알리는 形態가 가장 一般的이다. 프로세서가 實行될 때 變數 空間을 잡는 形態는 重複에 依해 問題가 될 수도 있다. 헤더파일의 使用은 여러 파일에서 重複으로 因클루드로 붙여서 使用하는 것이 一般的이기 때문이다.
兄을 알리는 C/C++ 코드 :
- #define
- enum
- struct 헤더 部
- 클래스 宣言 部
- 函數 兄
等이 代表的이다.
따라서 이것들은 헤더 파일에 넣는 것이 一般的이다. 헤더 파일에 變數의 宣言은 C/C++ 言語 立場에서는 問題가 없지만 프로그래밍 코드가 複雜해 지면 混沌의 念慮가 있으므로 습관된 헤더 파일 使用 方法 熟知가 必要하다.
適切하지 못한 헤더 파일 使用 예 :
헤더 파일
|
實時間 函數
|
메인 函數
|
// 파일: MyFunc.h
#ifndef _MYFUNC_H
#define _MYFUNC_H
char
gbuff
[
256
];
char
*
addString
(
char
*
pa
,
char
*
pb
);
#endif
|
// 파일: MyFunc.c
#include
<string.h>
#include
"MyFunc.h"
char
*
addString
(
char
*
pa
,
char
*
pb
)
{
strcpy
(
gbuff
,
pa
);
strcat
(
gbuff
,
pb
);
return
gbuff
;
}
|
// 파일: main.c
#include
<stdio.h>
#include
"MyFunc.h"
int
main
(
int
argc
,
char
*
argv
[])
{
char
*
pstr
=
addString
(
"첫 文字"
,
"다음"
);
printf
(
"%s
\n
"
,
pstr
);
return
0
;
}
|
같이 보기
[
編輯
]
外部 링크
[
編輯
]