<CPP>
20. 헤더 재정의 방지(Include Guard)
CodeGrimie
2021. 1. 25. 11:46
CPP에서 전처리기를 사용하여 헤더 재정의 방지한다.
#ifndef, #define, #endif
C와 CPP 표준에서 사용하는 헤더 재정의 방지 방법이다.
다르게 말하면 유닉스, 리눅스, FreeBSD, 윈도우, 맥OS 등 모든 운영체제에서 다 작동한다.
그래서 거의 대부분의 C++ 오픈소스 프로젝트들은 이 방법을 사용하고 있다.
가장 널리 사용되고 권장되는 방법이다.
▼ C/CPP 표준
#ifndef _POINT2D_H_
#define _POINT2D_H_
class Point2D
{
public:
Point2D();
~Point2D();
};
#endif
전처리기 명령어(ifndef) 이름대로 _POINT2D_H_ 가 재정의 되어 있지 않다면 재정의한다.
#pragma once
마이크로소프트社의 비주얼 스튜디오에서 사용하는 헤더 재정의 매크로다.
기능은 동일하지만 결정적인 차이로 모든 컴파일러들이 이 명령어를 지원하는 건 아니다.
오로지 윈도우 환경에서만 빌드하는 것이 확정적일 때는 사용해도 된다.
(그렇다고 권장하는 것은 아니다.)
▼ 비주얼 스튜디오
#pragma once
class Point2D
{
public:
Point2D();
~Point2D();
};