1. C 라이브러리
ㅇ C 언어에서, 자주 사용하는 함수들을 미리 작성하여 두고,
- 그 프로토타입(함수 원형) 만을, 공개 하고,
- 상세 구현 사항은, 별도로 모아 저장시켜둔 것
ㅇ 통상, 미리 컴파일시켜, 라이브러리 파일 형태로 제공됨
- 자주 사용되는 유용한 함수들에 대해, 미리 컴파일된 오브젝트 파일들을 모아둔, 파일 형태
2. C 라이브러리의 사용
ㅇ 사용 방법
- 함수 프로토타입 및 구조체 정보 등이 있는 헤더 화일을,
프로그램 처음에 포함(#include)시켜 사용
ㅇ 헤더 파일
- 주로, 함수 프로토타입(Function Prototype,함수 원형)이 들어있게 됨
. 함수 프로토타입 (함수 선언)
.. 함수에 전달할 인수 및 이의 타입,
.. 함수의 반환값의 타입 및 의미에 대한 정보 제공
- 또한, 함수 선언 이외에도,
. 열거형, 매크로(전처리지시자), 형식 정의(typedef), 전역 변수, 구조체 등도 포함 가능
ㅇ 라이브러리 파일
- C 라이브러리 함수들에 대해 미리 컴파일된 파일들
. 例) libc.a (표준 라이브러리 파일), libm.a (수치 연산 라이브러리 파일) 등
※ 헤더 파일,라이브러리 파일 등의 병합은, ☞ 전처리 지시자(#include), 링킹, gcc 컴파일러 참조
3. 표준 C 라이브러리 (`standard C library`, `libc` 라고 칭함)
ㅇ 표준 C 라이브러리 (역사 및 버전에 따라 여러가지가 있을 수 있음)
- 플랫폼(운영체제)에 독립적임 : ANSI C/ISO C library (ANSI libc)
- 유닉스 표준 : C POSIX library (POSIX libc)
- 서버,데스크톱 리눅스에서 많이 사용 : GNU C 라이브러리 (glibc)
- 임베디드 리눅스에서 많이 사용 (메모리 사용 최소화됨) : uClibc, diet libc, musl libc 등
ㅇ C 라이브러리 함수 例) ☞ 아래 4.항 참조
4. C 라이브러리 구분
ㅇ 표준 C 라이브러리
- 표준 헤더 파일 (ISO C 표준에 정의된 헤더 파일들)
. assert.h : 프로그램 진단(diagnostics) 매크로
. conio.h : 콘솔(console) 입출력 함수
.. putch(),cputs(),cprintf() 등
. complex.h
. ctype.h
.. 문자형 판별 함수 : isalpha(),isdigit(),isupper() 등
.. 문자 변환 함수 : tolower(),toupper() 등
. errno.h
. fenv.h
. float.h : 실수형에 관한 상수 정의
. inttypes.h,
. iso646.h
. limits.h : 정수형에 관한 상수, 크기 등, 데이터형 마다 기계의존적인 길이를 정의
. locale.h
. math.h : 수학 함수와 매크로
.. sqrt(),sin(),cos(),tan(),pow() 등
. setjmp.h : 일반적인 함수 호출과 복귀 과정을 거치지 않는 함수
. signal.h : 프로그램 수행 중 발생하는 예외상황을 처리하는 함수
. stdarg.h : 미확정 매개변수를 다루는 함수
. stdbool.h
. stddef.h
. stdint.h : 데이터형 마다 그 길이를 명확하게 수치로써 정의함 (C99에서 새롭게 도입됨)
.. 서로다른 기계 간에 이식성에 도움을 주기 위함
. stdio.h : 표준 입출력 라이브러리 ☞ 표준 입출력 라이브러리, 표준 파일 참조
.. 복잡한 입출력 기능을, 독자적인 버퍼를 사용하여, 쉽게 구현
.. getchar(), putchar(), puts(), printf(), scanf(), fopen(), fclose(), fgetc() 등
. stdlib.h : 범용 유틸리티
.. 범용 함수,매크로 등
.. 자료형 변환 (문자열 ↔ 숫자형) : atoi() 문자열 → 정수, strtol(), atof() 등
.. 기억장소 할당 : malloc(), free() 등
.. 정렬,검색 알고리즘 : qsort(), bsearch() 등
.. 상수 정의 : NULL, EXIT_FAILURE, EXIT_SUCCESS, RAND_MAX 등
. string.h : 문자열 처리 함수
.. 함수 : strcat(), strcmp(), strcpy(), strlen() 등 ☞ C 문자열 함수 참조
. tgmath.h
. time.h : 날짜와 시간을 다루는 함수
.. difftime(), mktime() 등
. wchar.h
. wctype.h
ㅇ 런타임 라이브러리
* (Unix/Linux 운영체제 관련)
- 운영체제 커널 차원에서 제공
. 컴파일러와 플랫폼에 특화되어 있음 (의존적임)
. 일반적인 C 언어 함수 호출 보다는 운영체제의 지원을 받는 시스템 호출을 의미
.. 입출력, 메모리 관리 등에 대한 기능들
- 시스템 호출용 헤더 파일 例)
. fcntl.h (열려있는 파일의 특성 제어를 위해서 사용)
. syscall.h
. unistd.h (다양한 심볼 상수, 자료형, 함수 등을 정의)
.. /usr/include/asm/unistd.h