SonHyeWon / SnakeGame

GNU General Public License v3.0
0 stars 2 forks source link

ui 헤더파일과 object헤더파일의 함수 이동 #11

Closed hongyj9823 closed 4 years ago

hongyj9823 commented 4 years ago

문제 파트 및 상황 서술

저는 스크린 구조체를 인자로 하는 함수들을 object 헤더 파일에 포함시키려 합니다. 그렇다면 오브젝트 헤더파일에 ui 헤더 파일을 인클루드 시켜야 하는데, 인클루드 후 컴파일 시켜보니 헤더 파일이 서로 충돌하여 오류가 납니다.

해당 사항 개선을 위해 본인이 수행했던 내용(없을 시 생략)

ifndef, define, endif 를 사용하여 헤더 파일들의 중복을 막으려 했지만, 헤더 파일 두 개가 서로를 참조하는 경우라 해결이 되지 않았습니다. #pragma once를 사용해 보려 했지만 이 또한 컴파일 오류를 일으켰습니다.

원하는 작동 방식

현재 ui 헤더 파일에서는 CELL 구조체만 필요하는 상황이라 CELL 구조체를 ui 헤더 파일로 옮기고 object 헤더 파일에 ui 헤더 파일을 인클루드 시킨 후, ui 헤더 파일은 아무것도 인클루드 하지않는 상태로 만드는 것이 어떨까 합니다.

MtNight commented 4 years ago

상황 정리: Object.h = Ui.h 인클루드, CELL 구조체, CELL 필요, ScreenInfo 필요 Ui.h = Object.h 인클루드, ScreenInfo 구조체(CELL 필요), CELL 필요

서로 인클루드 중이고 서로의 내용을 참조하기 때문에 오류가 난다는 말씀이신 듯 한데,

Object.h = Ui.h 인클루드, CELL 필요, ScreenInfo 필요 Ui.h = CELL 구조체, ScreenInfo 구조체, CELL 필요 이런 상태로 바꾸자는 말씀이시죠?

hongyj9823 commented 4 years ago

네. 맞습니다. 물론 지금 상황은 제가 함수들(screen 구조체가 필요한 함수)을 추가하기 위해 object 헤더 파일에서 ui 헤더 파일을 인클루드한 것입니다. 헤더 파일의 중복을 없애기 위해서 함수 이동이 필요하지 않을까 합니다.

MtNight commented 4 years ago

저는 CELL이라는 구조체의 의미를 생각해보면 화면에 띄우는 위치를 지정해주는 것이니, UI에 들어가는 것도 나쁘지 않을 듯 합니다. 더불어서 UI.h에서도 CELL이 이후에 계속 필요할 것 같아서 옮기는 것에 대해 찬성입니다. 만약 이거때문에 뭔가 또 문제가 발생하면 그건 그때 상황을 보고 판단을 해보아야 할 것 같습니다. 지금 당장에 진행이 우선인 듯 하니...

SonHyeWon commented 4 years ago

말씀하신 작동방식대로라면 괜찮을 듯 합니다. 저도 찬성 의견 드려요.

mellime commented 4 years ago

저도 괜찮다고 생각합니다. 말씀해주신 방안으로 수정해도 당장 다른 파트에서의 오류는 없을 것 같고, 후에 문제가 생긴다면 그때 수정해도 되니까요. 오히려 말씀해주신대로 수정하는 편이, 구조체를 한 헤더에 모아둘 수 있어서 좋은 것 같습니다!

hongyj9823 commented 4 years ago

네. 의견 감사드립니다. 수정 반영하여 진행하도록 하겠습니다.