인프런 커뮤니티 질문&답변

eendeenddl27님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C++

1.12 헤더 가드가 필요한 이유

#pragma once vs. #ifndef

24.03.05 11:12 작성

·

213

1

header guard로 #pragma once를 쓰는 방법과 #ifndef 쓰는 방법 두개를 설명해주셨는데, 두 개의 차이점이 있을까요?

구글링해보면 #pragma once가 처리속도가 빠르지만, 지원되지 않는 compiler가 있는 것 같고 (현재는 대부분의 compiler는 지원되지만), #ifndef 는 모든 compiler에서 지원되지만 처리속도가 #pragma once에 비해서 느리다 라는 것 같은데, 맞는 내용인지 모르겠네요.

답변 1

1

Soobak님의 프로필 이미지

2024. 03. 05. 23:27

안녕하세요, 질문&답변 도우미 Soobak 입니다.


좋은 궁금증이시네요.

말씀하신 내용이 맞습니다.

#pragma once#ifndef 기반의 헤더 가드에 비해 지원되는 컴파일러가 제한적이며,
파일 단위에서 헤더 포함 여부가 판단되기 때문에 #ifndef 에 비해 처리 과정이 보다 길어집니다.

하지만, 이는 큰 프로젝트에서 많은 헤더 파일들이 포함될 때 유의미합니다.
학습 단계에서는 '헤더 가드' 의 역할과 의미에 초점을 맞추어 이해하시는 것을 추천드립니다.