블로그를 정리하면서 오랜만에 옛 글을 읽었습니다.
CString에 관한 글. Windows 프로그래밍을 할 때 쓰는 바로 그 CString

CString을 사용할 때 LPCSTR로 형변환을 해서 사용해야 올바른 C++문장이라고 주장했습니다.

CString s = "K리그 프로그래머";
printf("%s", s); // 이렇게 쓰지 말고
printf("%s", (LPCSTR)s); // 이렇게 써야 한다고.

둘 다 잘 동작 하지만 컴파일러 구현에 따라 언제든지 동작이 바뀔 수 있으니 조금 길더라도 올바르게 적어야 후환이 없다면서.

지금은 생각이 바뀌었습니다. 아, 내가 저렇게 고지식했다니.

다시 Windows 에서 C++ 프로그래밍을 한다면 형변환 하지 않고 그냥 사용하겠습니다.
짧게 써도 잘 동작하는데 뭐하러 손가락 아프게 저걸 다 형변환해서 사용했지?
저런 코드가 무지 많았을 겁니다.
마이크로소프트가 저걸 바꿀 일도 없을 텐데.

저는 CString을 쓰는 게 싫었습니다. Windows 에서만 동작하기 때문에.
Windows 에서도 MFC가 아닌 프로그램에서는 CString 하나 때문에 불필요하게 많은 라이브러리를 끌어와야 하므로.

난 이식성 있는 프로그램을 만들고 싶단 말이야.

경험이 쌓인 후에는 STL의 string 을 사용했습니다.
이렇게 프로그램을 짜면 리눅스에서도 동작할 거야라고 생각하면서.
이제와서 돌아보니 그 코드들은 평생 리눅스에서 실행될 기회를 얻지 못했습니다.

다시 짜라면 저는 CString을 선택할까요 std::string을 선택할까요?
그건 잘 모르겠습니다. 둘 다 장단점이 있어서.
하지만 이식할 곳도 없는데 이식성 따위를 생각하지는 않을 것 같습니다.(웃음)

함께 읽으면 좋은 글: