C언어 헤더 파일과 #include
요약
C언어의 헤더 파일, #include, 라이브러리, 전처리기 개념을 알아봅니다. stdio.h, string.h 등 자주 사용하는 표준 라이브러리 함수와 #define 매크로를 정리합니다.
핵심 정리
| 용어 | 설명 | 예시 |
|---|---|---|
| 헤더 파일 | 함수 선언이 담긴 파일 (.h 확장자) | stdio.h, string.h |
| #include | 헤더 파일을 코드에 포함시키는 전처리기 지시문 | #include <stdio.h> |
| 라이브러리 | 미리 작성된 함수들의 모음 | 표준 라이브러리, 수학 라이브러리 |
| #define | 매크로 상수를 정의하는 전처리기 지시문 | #define PI 3.14 |
| 전처리기 | 컴파일 전에 소스 코드를 가공하는 단계 | #include, #define 처리 |
라이브러리란? 쌩기초
라이브러리(Library) 는 자주 사용하는 기능을 미리 만들어 놓은 함수들의 모음입니다.
직접 모든 기능을 구현하지 않아도, 라이브러리에서 제공하는 함수를 가져다 쓸 수 있습니다.
C언어에는 표준 라이브러리가 기본으로 제공되어, 모든 C 컴파일러에서 동일하게 사용할 수 있습니다.
헤더 파일이란? 쌩기초
헤더 파일(Header File) 은 라이브러리 함수의 선언이 담긴 파일입니다. 확장자는 .h입니다.
헤더 파일에는 함수의 선언(원형) 만 있고, 실제 구현은 컴파일된 라이브러리 파일에 있습니다.
위 코드에서 size_t나 const char *s 같은 표현은 아직 몰라도 괜찮습니다. "함수 이름과 괄호, 세미콜론으로 끝나는 형태"라는 점만 기억하세요.
함수 선언 vs 함수 정의
함수 선언(Declaration) 은 "이런 함수가 있다"고 알려주는 것입니다. 함수 이름, 반환 타입, 매개변수 타입만 명시하고 본문(중괄호 안 코드)이 없습니다. 함수 프로토타입이라고도 부릅니다.
함수 정의(Definition) 는 함수가 실제로 무엇을 하는지 코드로 작성한 것입니다.
| 구분 | 함수 선언 | 함수 정의 |
|---|---|---|
| 역할 | 함수 존재를 알림 | 함수 동작을 구현 |
| 본문 | 없음 (세미콜론으로 끝) | 있음 (중괄호 안에 코드) |
| 위치 | 헤더 파일 (.h) | 라이브러리 파일 |
컴파일러는 헤더 파일의 선언을 보고 "이 함수가 존재한다"는 것을 확인합니다. 컴파일이 끝나면 링커가 자동으로 라이브러리의 정의를 찾아 연결해 줍니다. 1
#include란? 기초
#include는 헤더 파일의 내용을 현재 코드에 포함시키는 전처리기 지시문 2입니다.
꺾쇠괄호 vs 큰따옴표
| 표기 | 의미 | 검색 위치 |
|---|---|---|
< > | 시스템 헤더 | 컴파일러 설치 경로 |
" " | 사용자 헤더 | 현재 디렉터리 → 시스템 경로 |
정보처리기사 실기에서는 대부분 표준 라이브러리(< >)만 사용합니다.
자주 사용하는 표준 라이브러리 기초
stdio.h - 입출력
string.h - 문자열 처리
stdlib.h - 일반 유틸리티
위 코드에서 malloc과 포인터 문법이 복잡해 보여도, 지금은 "이런 함수가 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으로 정의한 값은 컴파일 전에 해당 값으로 치환됩니다. MAX라고 쓰면 전처리기가 100으로 바꿔 놓는 것입니다.
정리
- 라이브러리: 미리 만들어진 함수들의 모음
- 헤더 파일: 함수 선언이 담긴
.h파일 - #include: 헤더 파일을 코드에 포함시키는 전처리기 지시문
- #define: 매크로 상수를 정의하는 전처리기 지시문
라이브러리 함수를 사용하려면 해당 헤더 파일을 #include로 포함해야 합니다.
함수의 선언과 정의를 더 자세히 알고 싶다면 함수 프로토타입 페이지를 참고하세요.