발전하는 춘배

[원고, SDL3] 3. 윈도우 오목 게임 만들기 - 클래스 파일 분할, 분할컴파일 본문

.원고

[원고, SDL3] 3. 윈도우 오목 게임 만들기 - 클래스 파일 분할, 분할컴파일

춘배0 2025. 8. 24. 19:58

그냥 파일 하나에 모든 클래스랑 코드랑 때려넣으니깐

복잡해져서(당연)

불편하니깐(당연)

클래스별로 파일을 분리했다(당연).

일단 omok.cpp는 의미없는건데 삭제 안 하고 캡처해버림.

 

일단 include랑 src로 나눈 이유:

gpt가 그러래요.

큰 프로젝트를 관리하기 쉽게 하기 위한 규칙이에요. - 라고 함.

일단 하란대로 하긴 했는데 궁금했던거

1. cpp랑 h파일을 끼리끼리 모아두는 이유

-> 그냥 역할별로 나눈 듯. 헤더파일은 선언 모아둔 거고 cpp 소스코드는 실제 구현부분이니깐.

-> 컴파일은 cpp파일을 하는거임. 헤더파일은 직접 컴파일 대상은 아니고 다른파일에서 #include "Game.h"처럼 갖다씀

2. 그럼 얘네 컴파일 어케하지

g++ src/*.cpp -Iinclude -o main.exe

src 폴더 내의 모든 cpp파일을 컴파일하고 main.exe 실행파일 만들어라.

-Iinclude: 헤더파일을 include폴더에서도 탐색해라.

3. main.cpp가 메인인 걸 알고 컴파일하고 링킹하는건가? 그럴 리는 없는디

-> 일단 컴파일단계에서는 엔트리포인트 신경안쓰고 싹다 컴파일해서 오브젝트 파일로 만들어짐

-> 링크단계에서 링커가 엔트리포인트를 찾음. 엔트리포인트가 바로 int main()함

==> 그래서 int main()은 하나만 존재해야함!

 

궁금증들이 해결됐다.

다 배웠던건데 까먹었다가 다시 보니깐 이제서야 기억이 하나둘하나둘 난다.

 

클래스 나누다보니깐

아쉬운 점들이 한두개가 아닌데

일단 Stone 클래스 만들면 기보 만들기가 편할 것 같단 생각이 들었고

전반적으로 보면 캡슐화 하나도 안 되어있다. 근데 뭐 OOP 공부하려고 한 게 아니라 SDL 써먹어보는 게 목표니깐 찝찝해도 과감하게 덮고 넘어가자. 난 시간 빌게이츠가 아니다. 선택과 집중..

사실 파일 분할도 안할까 하다가 이건 도저히 못참겠어서 한 거긴 함.

 

반응형