SonHyeWon / SnakeGame

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

mapArray 배열의 빌드 오류 문제 #27

Closed SonHyeWon closed 4 years ago

SonHyeWon commented 4 years ago

문제 파트 및 상황 서술

저는 vs2017에서 Pull requset #25 코드 리뷰를 진행하던 중 빌드 오류가 발생하는 것을 확인했습니다. ui.c 파일에서 발생하는 오류 및 경고는 다음과 같습니다.

경고 C4045 mapArray: 배열 범위에 오버플로가 발생했습니다. C4819 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.

오류 C2001 상수에 줄 바꿈 문자가 있습니다.

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

mapArray를 주석 처리하면 C4819 경고는 발생하나, 빌드는 정상적으로 되는 것을 확인했습니다. mapArray 배열에 유니코드 문자를 사용했기 때문에 발생한 문제로 추측됩니다.

원하는 작동 방식

다른 팀원분들은 문제 없이 코드 리뷰를 진행하신 것을 확인했습니다. 따라서 제가 소스코드를 유니코드로 인코딩 한 후 진행할 수도 있겠으나, 모든 환경에서 실행할 수 있는 프로그램을 고려할 때 mapArray의 문자를 수정하는 것이 어떨까 하는 의견을 드립니다.

추가로 서술을 원하는 내용(없을 시 생략)

오류 C4819의 microsoft 공식 설명서 링크를 첨부합니다. https://docs.microsoft.com/ko-kr/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4819?view=vs-2017

MtNight commented 4 years ago

그런데 이것이 단순히 빌드만 안되는 건지, 실행 자체에 문제가 있는지 확실하지 않아서... 현재 형태가 확실히 보기 편하기 때문에 되도록 살리고 싶은데, 혹시 실행 파일을 만들어 드리면 실행되는지 한번 확인을 해보시겠어요?

hongyj9823 commented 4 years ago

인코딩 문제군요.. 모든 실행환경을 고려하면 문자를 수정하는 것도 괜찮다고 생각합니다.

mellime commented 4 years ago

@MtNight 씨 말씀대로 실행 파일이 실행이 되는지도 궁금하긴 하지만, 제 3자가 저희 코드를 가져가서 직접 실행할 때, 위와 같은 인코딩 문제가 사용 환경에 따라 발생할 수 있으므로 문제를 사전에 방지하는 것이 좋겠네요. 저는 사용 문자(특수문자)의 수정 쪽에 찬성합니다.

SonHyeWon commented 4 years ago

@MtNight 보내주신 실행파일은 정상적으로 실행됩니다! 감사합니다. vs에서 환경설정을 여러가지 해봤지만 빌드는 계속 오류가 발생하네요.. 경고 레벨을 높여서 발생할 수 있는 오류를 최소화하는게 저희 수업에서 프로젝트 시작 조건이기도 했고, 가능하면 문자를 바꿨으면 하는 의견입니다. 다른 문자로도 깔끔하게 맵을 만들 수 있지 않을까요?

MtNight commented 4 years ago

경고 및 오류 발생을 줄여야 한다는 의견에 대해서는 저도 찬성입니다. 키보드 안에서 칠 수 있는 일반적인 문자로 변경하는 편이 안전할 듯 하네요.