끄적끄적

반응형

헤더파일에 대하여.


원시 프로그램은 여러 파일로 나누어 각각 별도로 번역할 수 있는데 번역(compile)된 루틴들을 모아둔 파일을 라이브러리(library)라 한다. 프로그램에서 라이브러리 루틴을 사용하려면, 마치 함수가 사용자 프로그램에 정의되어 있는 것처럼 간단히 호출만 하면 된다. 라이브러리 함수는 번역된 형식으로 저장되어 있기 때문에 사용자 프로그램은 라이브러리 파일 또는 라이브러리 함수를 포함하는 파일과 링크(link)되어야 한다. 라이브러리를 다른 파일과 링크하면, 선언된 라이브러리 함수만이 실행파일에 포함되지만, 파일에 함수를 작성해 두고 번역하여 두 파일을 링크시키면, 불필요한 함수까지 코드로 첨가되기 때문에 라이브러리는 디스크 공간과 주 메모리를 절약하는데 필요하다.

main()함수에서 외부함수는 사용되기 전에 선언되어야 하기 때문에 만약 외부함수가 많거나 여러번 사용되려면, 사용 전에 매번 선언되어야 하고 선언이 정확해야 하기 때문에 번거러운 문제가 야기된다. 따라서 함수에 대한 선언을 외부파일에 하나로 통합시켜 두고 원시프로그램에 포함시키기 위하여 작성된 파일을 헤더파일(header file)이라 한다. 라이브러리의 대다수 루틴들은 함수정의 및 선언들을 필요로 하기 때문에 링크되기 전에 선처리기에 의하여 해당 헤더파일을 원시프로그램에 포함시켜야 한다.

   C의 실행시간 라이브러리에 있는 대부분의 루틴들은 함수이나, 어떤 루틴은 매크로로 구현되어 있다. 매크로는 기능상 함수와 같으나 문자열들은 프리프로세스 단계에서 코드로 치환하기 때문에 함수 호출시의 비용을 줄일 수 있고, 실행시간이 함수보다 빠르다. 그러나 매크로가 반복해서 호출될 경우에는 코드의 반복된 치환으로 인하여 프로그램의 크기가 확장되는 단점을 갖기도 한다.

 

 

■ 헤더파일의 종류

헤더파일은 C 시스템의 서브 디렉토리인 INCLUDE에 있는데 헤더파일의 선언내용은 컴파일러마다 다를 수 있으나 일반적으로 아래와 같은 내용을 포함하고 있다.

 

   1)  <conio.h> : 입출력 포트와 콘졸(console)에 대한 모든 함수를 선언하고 있다.

   2)  <ctype.h> : 문자부류에 사용된 전역변수를 선언하고, 이에 대한 상수와 매크로를 정의한다. 예를 들면 islower(), toascii(), _tolower()와 같은 매크로와 _upper, _lower와 같은 상수를 정의하고, _ctype과 같은 전역변수를 선언한다.

   3)  <direct.h>:  chdir, getcwd, mkdir와 rmdir와 같이 디렉토리를 제어하는 함수를 포함하고 있다.

   4)  <dos.h> :  int86, int86x, intdos와 같이 MS-DOS 인터페이스 함수에 대한 매크로 정의, 함수선언, 형 정의를 포함하고 있다.

   5)  <errno.h> :  errno 변수의 값을 정하기 위하여 시스템 수준의 호출에서 사용되는 값을 정의한다.

   6)  <fcntl.h> :  파일이 텍스트모드 또는 이진모드로 해석되는지를 제어하고, 파일이 열리는 연산자의 형을 서술하기 위하여 호출되는 open과 fopen에서 사용되는 프래그(flag)를 정의한다.

   7)  <io.h> :  eof, open, tell, read, lseek, tell과 같이 저수준 입출력 함수와 파일처리에 필요한 함수를 선언하고 있다.

   8)  <malloc.h>: calloc, malloc, realloc과 같이 동적으로 메모리를 할당하는 함수를 선언하고 있다.

   9)  <math.h> : sqrt, sin, log10, pow, matherr와 같은 모든 수학루틴에 대한 함수를 선언하고 있다.

   10) <memory.h>: memcpy, memcmp, memset와 같이 버퍼 변경루틴에 대한 함수를 선언하고 있다.

   11) <process.h>: abort, exit, execle, system과 같이 모든 프로세스 제어함수를 선언하고 있다.

   12) <search.h> : bsearch, qsort와 같은 함수를 선언하고 있다.

   13) <signal.h> : signal과 같이 신호에 대한 값을 정의하고 있다.

   14) <stdio.h>  : fclose, fopen, gets, fread, scanf, printf, fprintf, fscanf와 같이 스트림 입출력에 대한 함수선언 및 매크로와  FILE과 같은 자료형과, EOF, NULL, BUFSIZ와 같은 상수를 정의하고 있다.

   15) <stdlib.h> : abs, atoi, itoa, rand, toupper, getenv와 같은 함수선언을 포함하고, errno와 같은 전역변수 선언하고 있다.여러유틸리티(텍스트를 수로 변환등)함수

   16) <string.h> : strcat, strcpy, strcmp, strncmp와 같이 문자열 처리함수를 포함하고 있다.

반응형
Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]