2016-11-30 5 views
0

C++로 작성된 Windows 바탕 화면에 대해 완전히 새로운 프로젝트로 작업하기 시작했습니다. Windows 프로그래밍을 배웠을 때 코드를 변경하지 않고 ANSI 또는 유니 코드 버전의 프로그램을 만들 수 있기 때문에 TCHAR을 사용하면 큰 발전을 보았습니다. 그러나 ANSI 버전을 빌드하는 옵션을 사용하지는 않았습니다. 또한 C++의 표준 라이브러리에는 TCHAR이 없으므로 std :: string, std :: stringstream 등의 typedef를 작성해야하며 넓은 문자열 대응 물을 사용해야합니다. 그래서 저는 현재 wchar_t에 찬성하여 TCHAR를 포기할 생각을하고 있으며 다음과 같은 장단점을 수집했습니다.오늘 TCHAR를 사용해야합니까?

장점 : 나는 그것을 사용하지 않는 경우, 프런트 엔드 컴파일러와 인텔리 더 나은 결과를 얻을 수 있도록

  • TCHAR는 매크로입니다.
  • 변수의 유형이 무엇인지 더 분명하게 나타냅니다.
  • L ""은 _T ("")보다 쉽게 ​​입력 할 수 있습니다.

단점 : 내가 정말 깔끔한 기능, 어떤 경우를 수 추상 문자 유형을 사용하여 찾을 수 있습니다, ANSI 버전을 필요로하지 않는 경우에도 문자 유형 (대한 모듈화의

  • 손실 앞으로는 UTF-8 또는 UTF-32 버전이 필요합니까?).
  • GetWindowTextW와 같은 W로 일부 API 함수를 후행해야합니다.

그리고 내 질문 :

  • 내가 위에서 설명한 하나보다 TCHAR를 사용하는 C에서 쉬운 방법 ++ 표준 라이브러리 있습니까? 이러한 typedef가있는 표준 헤더 파일과 비슷합니까?
  • 내 추론이 정확하다고 생각합니까?
  • 중요한 점을 놓치고 있습니까?
  • 오늘날 최첨단 솔루션은 무엇입니까? 전문 Windows 프로그래머가 여전히 TCHAR (새 코드)를 사용합니까?
  • TCHAR을 제거하면 _T ("") 대신 L ""또는 u ""를 써야합니까? 현대 창에서
+0

http://stackoverflow.com/questions/234365/is-tchar-still-relevant – Deduplicator

+0

링크를 제공해 주셔서 감사합니다.하지만 제 질문은 조금 다릅니다. 어쨌든 저는 생각하지 않습니다. 2008 년의 해답은 2016 년에 최첨단 해결책으로 자동 채택 될 수 있습니다. – z32a7ul

+2

IMO 적절한 노력을 기울일 필요가 없습니다. TCHAR이 완벽하게 구현된다면 그것은 또 다른 이야기 일 것이다. 그러나 그렇지 않다. 우리 회사에서 우리는 std :: string을 고수하고 꽤 잘 작동하는 UTF-8 문자열을 가지고 있습니다. Win32를 처리해야 할 때 wchar_t로 변환합니다 –

답변

1

모든 ANSI 함수는 내부적으로 wchar_t*char* 변환과 같은 기능의 유니 코드 버전을 요구하고있다. 기본적으로 wchar_t 대신 TCHAR을 사용하면 아무 것도 얻을 수 없지만 이상한 구문을 처리해야합니다.