#pragma once

OpenJR·2024년 4월 2일
#pragma once

헤더파일을 중복해서 include하면 컴파일이 안된다.

Bclass.h에서 Aclass.hinclude하고, main.c에서 Bclass.hAclass.hinclude하면 Aclass.h가 중복된다.

컴파일이 안되는 이유는 헤더파일을 중복으로 읽게되면 헤더파일에 정의된 클래스나 함수가 헤더파일을 한번 더 읽어 재정의 되기 때문이다.
헤더 파일에 있는 저 한줄의 의미는 컴파일 시, 헤더를 중복해서 include해도 한번 include된 헤더파일을 다시 읽지 않기 위함이다.
하지만 저 방식은 비표준이여서 구형 컴파일러는 지원안한다. 최신 컴파일러들은 대부분 지원한다.

국룰은 헤더의 처음과 끝에 아래와 같이 적는 것이다.

#ifndef _ACLASS_
#define _ACLASS_
// ...

#endif

이런 기능을 헤더가드라고 한다.

profile
Jacob

0개의 댓글