인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

hansh4530님의 프로필 이미지
hansh4530

작성한 질문수

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

1.12 헤더 가드가 필요한 이유

헤더 가드 이름에 관해서요

작성

·

32

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

헤더가드 이름은 어떤기준으로 정하는건가요? #ifndef 다음에 오는 이름이요! 어떤걸로 해도 상관없는건가요?

답변 2

1

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


좋은 질문이시네요.

어떤 것으로 하여도 상관은 없지만, 상황에 따라서 기준을 정하여 사용합니다.

주로 팀의 관례에 맞추어 사용하기 때문에, 어떤 기준을 사용하더라도 팀에 잘 맞추어 갈 수 있도록 헤더 가드의 의미와 목적에 초점을 맞추어 학습하며 이해하는 것이 좋다고 생각합니다.

 

보통 파일 이름을 기반으로 example.h 의 경우 #ifndef EXAMPLE_H 와 같이 사용하는 경우가 많으며, 경로를 포함하여 src/utils/example.h 의 경우 #ifndef SRC_UTILS_EXAMPLE_H 등과 같이 사용하기도 합니다.
여러 프로젝트를 동시에 다룰 때에는 프로젝트 명까지 포함하여 사용하기도 합니다.

헤더 가드의 목적은 충돌을 방지하기 위함이므로, '고유성' 을 지키는 것이 가장 핵심적인 부분임을 고려하시면 추후 어떤 이름을 사용하셔도 헤더 가드의 목적에 맞게 잘 사용하실 수 있으시리라 생각됩니다.

 

추가적으로, 팀에서 사용하는 관례에 맞게 자동으로 코드 스타일과 헤더 가드 등을 정리해주는 포매터를 사용하기도 하며 #prgma once 를 사용하여 간단하고 효율적으로 헤더 파일을 관리하기도 합니다.

0

안녕하세요, 인프런 AI 인턴입니다. hansh4530님.

헤더 가드 이름을 어떻게 정해야 하는지에 대한 질문을 주셨군요. 헤더 가드는 같은 파일이 여러 번 포함되는 것을 방지하기 위한 매크로입니다. 이름은 보통 파일 이름과 관련된 내용을 사용하여 고유하게 지어주는 것이 좋습니다. 이렇게 하면 가능하면 중복을 피할 수 있습니다.

  1. 파일명 기반: 일반적으로 파일 이름을 대문자로 하고 언더스코어로 구분하여 사용합니다. 예를 들어, 파일 이름이 my_header.h라면 MY_HEADER_H와 같은 방식입니다.

  2. 프로젝트 이름 포함: 프로젝트가 다수의 헤더 파일을 포함한다면 프로젝트 명이나 모듈명을 추가하여 좀 더 고유하게 구성할 수 있습니다. 예를 들어, MYPROJECT_MY_HEADER_H처럼요.

  3. 취향에 따른 스타일: 일부 개발자들은 회사나 개인 스타일 가이드를 따르기도 합니다. 예를 들어, __로 시작하거나 끝나는 방식을 피해야 합니다. 이는 표준 라이브러리에서 사용될 수 있는 예약된 방식이기 때문입니다.

헤더 가드의 이름은 단순한 매크로이기 때문에 이름 자체는 임의의 것입니다만, 중복을 피하기 위해 위와 같은 방식을 활용하는 것이 일반적입니다.

혹시 더 구체적인 상황이나 문제가 있다면 추가로 질문해 주세요. 이해를 돕기 위해 아래 링크들도 같이 참고해 주시면 좋을 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hansh4530님의 프로필 이미지
hansh4530

작성한 질문수

질문하기