• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

헤더파일에서 매크로 선언은 전방선언 없이 어떻게 사용 가능한가요?

21.09.07 16:12 작성 조회수 155

0

간단한 매크로 변수와 관련된 질문 하나 부탁드립니다ㅠ

 

SwapChain 클래스를 구현할때,

ComPtr<ID3D12Resource> _renderTargets[SWAP_CHAIN_BUFFER_COUNT];

이란 코드를 넣는데, 이때 더블 버퍼링을 의미하는SWAP_CHAIN_BUFFER_COUNT enum 상수를 넣는 내용이 있습니다.

꼼꼼이 공부하다보니, 매크로는 전처리 단계에서 처리되어 실제 원본 값으로 바뀌는것을 알고 있는데, 이때 헤더에서는 이 매크로에 대한 정보를 헤더파일에 include 해주지 않은 상태인데도 어떻게 문제없이 작동하는지 궁금합니다.

(매크로는 EnginePch.h 에 있는데, 이 헤더를 SwapChain.h에서 추가하지 않은 상태입니다.)

매크로 변수가 뭔지 알기 위해서는 전처리기는 cpp파일로 이동해서 include된 pch.h에 접근하고 거기서 EnginePch.h에 접근해야만 비로소 SWAP_CHAIN_BUFFER_COUNT 이 무엇을 의미하는지 알게되는데,

이것과 비교하여 컴파일러의 컴파일 단계에서는 헤더파일을 빌드할때 정보가 필요한 헤더파일이 딱히 없어도 전방선언만 해주면 통과되는것으로 알고 있습니다.

그렇다면 전방선언도 하지 않은 매크로가 통과되는건 전처리기 단계에서는 컴파일러와 다르게 모든 소스코드를 뒤져본다는 것으로 이해하는게 맞는걸까요?

위에서 적은대로, cpp 까지가서 해당 정보가 있는지 확인하고, 그 헤더들을 다 뒤져보는 과정이 전처리기에 숨어있는지 궁금합니다.

답변 1

답변을 작성해보세요.

1

[미리 컴파일된 헤더]인 pch.h쪽에 include를 해놔서 그렇습니다.
아래 질문 같이 참고 바랍니다.

https://www.inflearn.com/questions/301448