C언어 헤더 파일과 #include
요약
C언어의 헤더 파일, #include, 라이브러리 개념을 알아봅니다. stdio.h, string.h 등 자주 사용하는 표준 라이브러리 함수를 정리합니다.
핵심 정리
| 용어 | 설명 | 예시 |
|---|---|---|
| 헤더 파일 | 함수 선언이 담긴 파일 (.h 확장자) | stdio.h, string.h |
| #include | 헤더 파일을 코드에 포함시키는 지시문 | #include <stdio.h> |
| 라이브러리 | 미리 작성된 함수들의 모음 | 표준 라이브러리, 수학 라이브러리 |
라이브러리란?
라이브러리(Library) 는 자주 사용하는 기능을 미리 만들어 놓은 함수들의 모음입니다.
직접 모든 기능을 구현하지 않아도, 라이브러리에서 제공하는 함수를 가져다 쓸 수 있습니다.
C언어에는 표준 라이브러리가 기본으로 제공되어, 모든 C 컴파일러에서 동일하게 사용할 수 있습니다.
헤더 파일이란?
헤더 파일(Header File) 은 라이브러리 함수의 선언이 담긴 파일입니다. 확장자는 .h입니다.
| 헤더 파일 | 제공하는 기능 | 주요 함수 |
|---|---|---|
stdio.h | 입출력 (Standard I/O) | printf, scanf, fopen |
string.h | 문자열 처리 | strlen, strcpy, strcmp |
stdlib.h | 일반 유틸리티 | malloc, free, atoi |
math.h | 수학 연산 | sqrt, pow, sin, cos |
ctype.h | 문자 판별 | isupper, islower, isdigit |
헤더 파일에는 함수의 선언(원형) 만 있고, 실제 구현은 컴파일된 라이브러리 파일에 있습니다.
함수 선언 vs 함수 정의
함수 선언(Declaration) 은 "이런 함수가 있다"고 알려주는 것입니다. 함수 이름, 반환 타입, 매개변수 타입만 명시하고 본문(중괄호 안 코드)이 없습니다.
함수 정의(Definition) 는 함수가 실제로 무엇을 하는지 코드로 작성한 것입니다.
| 구분 | 함수 선언 | 함수 정의 |
|---|---|---|
| 역할 | 함수 존재를 알림 | 함수 동작을 구현 |
| 본문 | 없음 (세미콜론으로 끝) | 있음 (중괄호 안에 코드) |
| 위치 | 헤더 파일 (.h) | 라이브러리 파일 |
컴파일러는 헤더 파일의 선언을 보고 "이 함수가 존재한다"는 것을 알고, 나중에 라이브러리의 정의와 연결합니다.
#include란?
#include는 헤더 파일의 내용을 현재 코드에 포함시키는 전처리기 지시문입니다.
#include를 작성하지 않으면 컴파일러가 해당 함수를 인식하지 못해 오류가 발생합니다.
꺾쇠괄호 vs 큰따옴표
| 표기 | 의미 | 검색 위치 |
|---|---|---|
< > | 시스템 헤더 | 컴파일러 설치 경로 |
" " | 사용자 헤더 | 현재 디렉터리 → 시스템 경로 |
정보처리기사 실기에서는 대부분 표준 라이브러리(< >)만 사용합니다.
자주 사용하는 표준 라이브러리
stdio.h - 입출력
| 함수 | 설명 |
|---|---|
printf | 형식화된 출력 |
scanf | 형식화된 입력 |
fopen | 파일 열기 |
fclose | 파일 닫기 |
string.h - 문자열 처리
| 함수 | 설명 |
|---|---|
strlen | 문자열 길이 반환 |
strcpy | 문자열 복사 |
strcmp | 문자열 비교 (같으면 0) |
strcat | 문자열 연결 |
stdlib.h - 일반 유틸리티
| 함수 | 설명 |
|---|---|
malloc | 동적 메모리 할당 |
free | 메모리 해제 |
atoi | 문자열 → 정수 변환 |
rand | 난수 생성 |
math.h - 수학 연산
| 함수 | 설명 |
|---|---|
sqrt | 제곱근 |
pow | 거듭제곱 |
abs | 절댓값 |
ceil | 올림 |
floor | 내림 |
전처리기란?
전처리기(Preprocessor) 는 컴파일 전에 소스 코드를 가공하는 단계입니다.
#으로 시작하는 지시문은 모두 전처리기가 처리합니다.
| 지시문 | 설명 | 예시 |
|---|---|---|
#include | 파일 포함 | #include <stdio.h> |
#define | 매크로 정의 | #define PI 3.14 |
#ifdef | 조건부 컴파일 | #ifdef DEBUG |
#define 예시
#define으로 정의한 값은 컴파일 전에 해당 값으로 치환됩니다.
정리
- 라이브러리: 미리 만들어진 함수들의 모음
- 헤더 파일: 함수 선언이 담긴
.h파일 - #include: 헤더 파일을 코드에 포함시키는 지시문
라이브러리 함수를 사용하려면 해당 헤더 파일을 #include로 포함해야 합니다.