C/문법

[C] 헤더파일

Rix 2021. 9. 23. 11:32

# 헤더파일

<stdio.h>와 같이 h 확장자로 만들어진 것들이 있다.

이러한 헤더파일을 사용함으로서, 이 파일 안에 선언되어 있는 여러가지 함수를 사용할 수 있게 되는 것이다.

--> C 파일로 만들어진 오브젝트 파일에 있는 함수들의 내용을 다른 소스 파일에서 사용할 수 있도록 하기 위함이다.

 

# 헤더파일 생성법

# 헤더파일 생성 후, 사용법

header.h 파일에는 main 함수의 선언 부분을 넣어준다.

일반적으로 헤더파일에 선언을 한 뒤 해당 코드 파일에 그 정의를 작성한다.

헤더파일에 맞는 코드파일은 header.c 이다.

 

사용 예시)

  // header.h

#include <stdio.h>

struct Score 
{
    int kor;
    int eng;
    int math;
};

void PrintStruct(struct Score person);
  // header.c

#include "header.h"

void PrintStruct(struct Score person)
{
    printf("국어: %d\n", person.kor);
    printf("영어 %d\n", person.eng);
    printf("수학 %d\n", person.math);
}
  // main.c

#include "header.h"

int main(void) {
    struct Score p;

    p.kor = 30;
    p.eng = 100;
    p.math = 100;

    PrintStruct(p);

    return 0;
}

// 실행결과
국어: 30
영어 100
수학 100

 

# 헤더파일 중복 문제 해결법

중복 오류를 해결하기 위해 다음과 같이 #ifndef 라는 전처리문을 사용한다.

#ifndef xxx
#define xxx
...
#endif

 

사용 예시)

// header.h
#ifndef HEADER

#define HEADER
#include <stdio.h>

struct Score 
{
    int kor;
    int eng;
    int math;
};

void PrintStruct(struct Score person);

#endif

--> "HEADER"가 정의되어 있지 않으면, #endif 전처리문 이전까지의 코드를 실행한다.