<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();
};