inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

장치 초기화

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

270

언리얼컨설팅

작성한 질문수 31

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 까지가서 해당 정보가 있는지 확인하고, 그 헤더들을 다 뒤져보는 과정이 전처리기에 숨어있는지 궁금합니다.

DirectX 게임수학

답변 1

1

Rookiss

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

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

Lighting 추가하고 나니 프레임이 많이 떨어지는데 원래 이런 건가요?

0

524

0

Deferred Rendering 에서 조명에 Culling이 일어나는 것 같습니다.

1

564

1

static_pointer_cast와 static_cast의 차이가 무엇인가요?

0

1353

1

Engine.lib 파일을 포함 불가

0

617

1

셰이더 VS_Main에서 행렬 곱해줄 때

0

491

2

1:05분 질문(1시간 5분)

0

303

0

오류가 발생합니다

0

479

1

Animation코드가 무한로딩에 걸리네요

0

350

0

fov 관련해서 질문이 있습니다

0

282

0

normal mapping Tangent Space 수학식 질문

0

388

1

커리큘럼 관련 질문 드립니다!

0

278

0

강의를 어떤식으로 들으면 될까요??

0

385

1

머티리얼과 텍스쳐, 셰이더를 따로 관리해도 되나요?

0

444

1

박스 메쉬 생성하는 함수에서 버텍스가 왜 24개인가요

0

245

1

복수개의 서로 다른 동영상을 Picture in Picture 형식으로 rendering하는 가장 최적의 방법이 궁금합니다.

0

262

0

애니메이션 쉐이더에서 행렬보간 부분에 대해 질문드립니다

0

233

0

assert 에서 _currentIndex 와 _elemtSize 를 비교하는게 이해가 잘 안되네요

1

248

1

DX 공부방법에 대해서 질문 있습니다.

0

643

1

Root Parameter 를 정의하는데 있어서 질문있습니다.

0

377

1

Client 콘솔창이 잠깐 켜졌다가 말아요

0

255

1

DirectX12 Root Signature : CBV관련 질문입니다.

0

353

1

뷰 변환 행렬 관련하여

0

634

2

강의 시작!

0

306

1

using namespace Microsoft::WRL;

0

275

1