Source : http://sjc333.egloos.com/2274953
vc6과 vs2005는 둘다 꾀나 명품들입니다.
윈도우에서는 98과 xp가 그러하듯 꾀나 사랑받고 있습니다.
요즘 만지작 거리는 프로그램은 vc6으로 되어 있었습니다.
보는 즉각, vs2005로 바꾸려고 했는데, 그놈에 차이점들 때문에 쉽게 안되더랍니다.
왠만한 차이점은 다 간파했는데, 오늘 만난것은 강적이였습니다.
조합형에서 보이는 코드가 완성형 문서 안에 적혀있었는데, 보통은 이런게 궭뒑 이런 식으로 보입니다.
그런데 오늘 문제를 일으킨 코드는 ? 닥치고 물음표로 보였던 것들.
완성형에서는 '같' 인데 그걸 조합형 코드로 변환후,
조합형코드 그대로를 완성형 문서에 적으면 ? 물음표로 보입니다.
이걸 vc6에서는 그냥 모르니까 물음표! 하지만 코드는 그 무언가 알 수 없는 그것을 유지해줍니다.
그러나 우리의 친절한 vs2005님께서는 그 무언가 알 수 없는 물음표? 를 진짜 물음표로 바꿔주십니다.
닥치고 코드는 완성형에서의 물음표 코드값으로 바꿔버리고, 유니코드 문서로 다시 바꿔주시는 친절함.
경고와 함께 절대로 완성형or조합형 문서로 저장할 수 없다고 빡빡 우깁니다. 데이터가 날아간다나 머라나.
덕분에 완성형<>조합형 변환 소스에 있는 매칭 코드 덩어리들이 전부 유니코드로 변환되어서
변환 프로그램을 새로 구해야 했습니다.
ㄱ-
새로 구한 프로그램은, 닥치고 유니코드에서도 그 형틀을 유지할 수 있도록
친히 핵사코드로 몽땅 하드코딩 되어 있답니다.
그런데 이 ㅅㅂㄻ 핵사코드 버젼님하는
모든 소스가 라이브러리 형식이 아닌, MFC에서 돌아가도록 프로그램 시작점(main함수)를 포함하고 있으며
stdafx따위와 표준을 과감히 무시하는 CString 님하까지 남발하여 리눅스에서도 돌아가게 해야하는
작업의 특성상 스트레스를 ;마ㅣ너레;ㅁ나ㅣ울;미ㅏㄴㅊㅍ;마ㅣㄴㅇㄹ;ㅡㅓ만ㄹ;
덕분에 새로 받은 조합형변환기도 대충 30%가량을 새로 작성했습니다.
필요함수만을 추출 분리하고, 표준에 맞추어 전부 바꾼후, 함수의 입출력 인자와 반환형을 기존의 변환함수들과
일치시키기........................쉽게 말해서 노!가!다!
감기 때문에 고생해 죽겠는데,
개막장코드를 상대하기 위해 소멸해버린 나의 아름다운 "코드 결벽증"을 에도하며
그 개막장코드를 vc6에서 vs2005로 바꾸기 위해서 캐고생을 하였습니다.
고생중에 가장 고생이였던 부분은,
vs2005가 지멋대로 유니코드로 문서를 저장시켜버려서 코드값이 뭉개졌다는 사실을 알아내기 까지였습니다.
조합형코드의 물음표가 유니코드고 머고간에 전부 그냥 닥치고 물음표로 보였기 때문에
버그의 원인을 알아내는데 대충 3시간은 걸린
아아아아아아아아악!!!!!!!!!!
버그 원인을 알아내게된 방법과 실마리는,
물음표가 2바이트 문자가 아닌 1바이트 문자여서 문자열의 바이트단위 길이가 달라졌다는것.
그 외에도 자잘하게
for(int i.......)
{
}
i=10;
따위의 문장에서 i값이 모르는넘이라고 생까주시는 vs2005님과,
내가 봐도 사실 생까도 괜찮은거 같은데 그걸 또 잘 돌려주시는 vc6 님 때문에 고생을 꾀나 했고
strcpy를 strcpy_s로 바꾸라고 우겨주시는 vs2005님과, (거기서 strcpy_s는 인자가 하나 더 많아 ㅠ_ㅠ)
#include <string> 이라고 .h를 무시하라는 vs2005
이어서 string은 std::string으로 적으라고 강요하지만, 꼬우면 using namespace std; 를 쓰면 되는데, 그런 팁 하나 없느
msdn ㅅㅂㄻ
여전히 왠만한 고급지식은 검색해도 안나와주는 한국의 웹.
결국 영어로 구글링
에효 그래도 자바보다는 쾌적한 개발환경같습니다.
자바와 톰켓과 mysql과, 콘솔에서의 한글 입력에서의 한글저장형식의 일치화란 ..... 킹오브 개막장. ㄱ-;;;;
그러고보니 자바도 유니코드로 넘어가고있는데 후덜덜