강의

멘토링

커뮤니티

Inflearn Community Q&A

minami11041604's profile image
minami11041604

asked

[MMORPG Game Development with C++ and Unreal Series] Part 2: Game Math and DirectX12

삼각형 띄우기 강의 중에서 질문 드립니다

Resolved

Written on

·

280

0

안녕하세요

삼각형 띄우기 강의를 듣다 궁금한 점이 있어 질문드립니다

삼각형 띄우기 강의에서 EnginePch.h에서 

struct Vertex

{

Vec3 pos;

Vec4 color;

};

이렇게 Vertex 자료형을 정의 하셨는데 

여기서 궁금한점이 어떻게 Mesh.h에서는 아무런 파일도 #include 하지 않았는데

어떻게 다른파일(EnginePch.h)에서 정의한 Vertex 자료형을 사용할 수 있는지 궁금합니다

프리 컴파일 헤더여도 Mesh.cpp에서와 같이 #include "pch.h" 를 해줘야 

EnginePch.h에서 정의한 자료형을 사용할 수 있을거 같은데

Mesh.h에서는 #include "pch.h"를 하지 않고도 struct Vertex 자료형을 사용할 수 있는지 궁금합니다.

DirectX게임수학

Answer 1

1

Rookiss님의 프로필 이미지
Rookiss
Instructor

정확한 내용은 C++ 컴파일 원리를 이해해야 하는데 너무 복잡한 주제입니다.
일단은 PreCompiledHeader는 일반 헤더랑 조금 동작이 다르다고 생각하시면 됩니다.
pch.h에서 정의한 애들은, 일반 헤더에서도 '대부분' 사용할 수 있습니다.
'대부분'이라 한 이유는 pch.h에서 추가된 순서에 따라 예외 케이스가 있을 수 있는데요.

예를 들어, pch.h에서

#include "Mesh.h"
#include <vector>

순서로 include를 했다 하면
Mesh.h 에서 바로 vector를 사용할 수 없고
Mesh.h 헤더에서도 #include <vector>를 명시적으로 넣어줘야 합니다.

반면 pch.h에서

#include <vector>
#include "Mesh.h"

위 순서로 추가 해줬다면, Mesh.h에서 vector를 바로 사용할 수 있습니다.

minami11041604님의 프로필 이미지
minami11041604
Questioner

답변 감사합니다

minami11041604's profile image
minami11041604

asked

Ask a question