in 소프트웨어 개발

병신같은 비주얼 스튜디오 일본어 주석

번역을 위해 실시간으로 게임이 사용중인 메모리 주소의 명령을 교체해 텍스트를 가로채는 프로그램을 다루는 프로젝트를 후배와 하고 있었다.

(근데 후배가 잘알인 프로그램이라 최종 발표 직전까지는 후배짱이 거의다 커밋해줌ㅠ ㅈㅅ)

문법에 문제가 없는 코드가 비주얼 스튜디오 2015로 컴파일을 몇번이나 돌려도 수많은 문법 에러를 쏟아냈다.

눈으로 읽어도 문제가 없고 인텔리센스로 안잡히는데, 로그 상으로는 마치 어떤 코드 라인 자체가 없는 것처럼 뜨는 거심.

수시간 동안 뻘짓 하다가 혹시나..? 해서 일본어로 작성된 주석 한줄을 지웠더니 정말 잘되던 거시었다. ㅇㅅㅇ#

 

일본어 주석으로 작성된 라인의 다음 라인이 통채로 컴파일 과정에서 없는 것으로 처리되었던 것이다.

코드 인코딩 자체도 UTF-8 이고, 일본어 주석 코드가 한두군데가 아닌데 왜 이것만 에러가 터지나? 몇번 실험을 반복했더니 결과가 나왔다.

일본어로 끝나는 주석의 바로 다음줄은 씹힌다.

 

 

이렇게 하면 if문 한줄이 날아간다.

// はるかかなた
if (m_gun) {

 

이런식으로 일본어가 아닌 문자나 공백 문자가 끼어있으면 에러가 안난다.

// はるかかなた hi
if (m_gun) {

 

즉 일본어로 끝나지 않는 주석이라면, 일본어를 포함해도 다음 줄이 안씹힌다.

 

즉시 뛰어난 추리력으로 추측해본 결과 후배가 코드를 받을때 Git 을 통해 받지 않았음을 직감했다.

 

파일들 EOF를 보니 전부 LF (유닉스) 로 되어있어서 윈도우 기준인 CRLF 로 바꿔주니 일본어 주석 다음 라인이 안씹힌다. 마이크로소프트 이 쓰레기들!!!!

윈도우가 표준을 안지키니 리눅스와 윈도우 사이의 줄바꿈을 표시하는 인코딩 방법이 다르다. Git 을 통해 클론하면 자동으로 운영체제에 따라서 텍스트의 줄바꿈 인코딩을 자동으로 바꿔서 클론해준다. 근데 깃허브의 저장소 페이지에서 수동으로 zip 파일로 다운로드 받으면 그게 안됨.

 

그냥 급하게 간단한 해결책으로 일본어로 끝나는 주석은 끝에 공백이나 줄바꿈 하나 넣고 컴파일 돌리는 동안 깃을 거쳐 받았다.