#include 지시자

C 언어와 C++에서 #include는 소스 코드 파일의 가장 윗부분에서 흔히 볼 수 있는 전처리기 지시자(Preprocessor Directive)입니다.

1. #include의 핵심 역할

#include는 한마디로 “복사해서 붙여넣기”입니다.

컴파일러가 실제 코드를 번역하기 전(전처리 단계), 지정한 파일의 내용을 #include 문장이 있는 그 자리에 통째로 가져와서 삽입합니다.


2. 사용법에 따른 차이 ( < > vs " " )

#include를 사용할 때 괄호의 모양에 따라 파일을 찾는 위치가 달라집니다.

< > (꺽쇠 괄호)

  • 사용 예: #include <stdio.h>
  • 설명: 시스템의 표준 라이브러리 경로에서 파일을 찾습니다.
  • 대상: 컴파일러 설치 시 기본적으로 제공되는 표준 헤더 파일들을 불러올 때 사용합니다.

" " (큰따옴표)

  • 사용 예: #include "my_header.h"
  • 설명: 현재 작업 중인 디렉토리(소스 파일이 있는 곳)에서 먼저 파일을 찾습니다. 만약 거기서 못 찾으면 시스템 표준 경로를 뒤집니다.
  • 대상: 개발자가 직접 만든 헤더 파일을 불러올 때 주로 사용합니다.

3. 왜 헤더 파일을 포함해야 할까?

printfscanf 같은 함수를 쓸 수 있는 이유는 그 함수들의 선언(Declaration)stdio.h라는 파일 안에 들어있기 때문입니다.

  • 컴파일러는 함수를 만나면 “이 함수가 어떻게 생겼는지(매개변수, 반환 타입 등)”를 알아야 합니다.
  • 직접 모든 함수를 정의하기엔 양이 너무 많으므로, 미리 정의된 헤더 파일을 #include로 불러와서 정보를 제공하는 것입니다.

4. 주의사항: 중복 포함 방지

대규모 프로젝트에서는 여러 파일이 서로를 참조하다가 똑같은 헤더 파일을 여러 번 #include 하는 상황이 발생할 수 있습니다.

이는 정의 중복 에러를 일으키므로, 보통 다음과 같은 기법을 사용합니다.

  • Header Guard:C#ifndef MY_HEADER_H #define MY_HEADER_H // 코드 내용 #endif
  • pragma once:C#pragma once // 코드 내용
#ifndef MY_HEADER_H
#define MY_HEADER_H

/* 헤더 파일 내용 */
void say_hello();

#endif

5. 자주 사용하는 표준 라이브러리 헤더 목록 (c)

헤더 파일포함 내용대표 함수
<stdio.h>표준 입출력printf, scanf, fopen
<stdlib.h>메모리·변환·난수malloc, free, rand
<string.h>문자열 처리strcpy, strlen, strcmp
<math.h>수학 함수sqrt, pow, sin
<time.h>시간·날짜time, clock, difftime

💡 요약

#include외부에 작성된 코드나 함수 선언을 현재 파일로 가져오는 통로입니다.

시스템 라이브러리는 < >를, 내가 만든 파일은 " "를 사용합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤