#pragma once
헤더파일을 중복해서 include하면 컴파일이 안된다.
Bclass.h에서Aclass.h를include하고,main.c에서Bclass.h와Aclass.h를include하면Aclass.h가 중복된다.
컴파일이 안되는 이유는 헤더파일을 중복으로 읽게되면 헤더파일에 정의된 클래스나 함수가 헤더파일을 한번 더 읽어 재정의 되기 때문이다.
헤더 파일에 있는 저 한줄의 의미는 컴파일 시, 헤더를 중복해서 include해도 한번 include된 헤더파일을 다시 읽지 않기 위함이다.
하지만 저 방식은 비표준이여서 구형 컴파일러는 지원안한다. 최신 컴파일러들은 대부분 지원한다.
국룰은 헤더의 처음과 끝에 아래와 같이 적는 것이다.
#ifndef _ACLASS_
#define _ACLASS_
// ...
#endif
이런 기능을 헤더가드라고 한다.