수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694167
  • Today | 518
  • Yesterday | 588

1 Articles, Search for 'TCHAR'

  1. 2007/03/05 Unicode/MBCS(DBCS)/ANSI/TCHAR
Programming/ATL/COM2007/03/05 16:56

Unicode/MBCS(DBCS)/ANSI/TCHAR

원본 : http://www.debuglab.com/knowledge/unicodembcs.html

1.요약

각각의 차이점을 짧게 소개하고, 사용시 주의점을 살펴봅니다.


2.본문

문자열 세트를 나타내는 각각의 용어에는 다음과 같은 뜻이 있습니다.

[Unicode] 2바이트가 하나의 문자를 나타내며, 세계 각국의 언어를 동일한 코드로 표현할 수 있습니다. Windows NT/2000 운영체제는 내부적으로 Unicode를 사용하고 있습니다. 그렇기 때문에 API 호출시에 Unicode 를 사용한다면 보다 효율적입니다. C++에서는 wchar_t 타입을 사용합니 다.

[MBCS/DBCS] 하나의 문자를 나타내기 위해서 한 바이트 이상이 사용됩니다. DBCS는 한 바이트 혹은 두 바이트가 하나의 문자를 나타내는 MBCS의 특수한 경우입니다.
C++ 에서는 unsigned char 타입을 사용합니다.( 보통은 char를 사용하는 것 같습니다)

[ANSI] 한 바이트로 하나의 문자를 나타내는 코드입니다. C++ 에서는 char 타입을 사용합니다.

[TCHAR] char 혹은 wchar_t가 될 수 있는 매크로 입니다.

-------------------------------------------------------------------

Unicode를 사용해서 프로그램을 작성하는 것은 다음과 같은 장단점이 있습니다.

장점 - Windows NT/2000에서, 보다 효율적이다.
단점 - Windows 9X 에서 실행되지 않는다.

MBCS/ANSI를 사용해서 프로그램을 작성하는 것은 다음과 같은 장단점 이 있습니다.

장점 - Windows 9X/NT/2000 에서 다 돌아간다.
단점 - Windows NT/2000 에서, 보다 비효율적이다.

------------------------------------------------------------------

즉, 상황에 맞는 선택이 필요한 것인데, 그렇다고 상황이 변할때 마다 코드를 재작성 할 수는 없는 일이기에 TCHAR 라는 매크로를 사용하기에 이르렀습니다.

TCHAR는 평소에는 char로 활약하다가 유사시에는 wchar_t가 되는 매크로입니다.

관련된 내용은 훌륭한 서적/참고 자료가 많이 있으므로 생략하고 간단한 참고 자료를 제시하겠습니다.

-----------------------------------------------------------------

프로젝트에서 UNICODE 혹은 _UNICODE라는 심볼이 미리 정의되는 경우 TCHAR는 wchar_t로 돌변합니다. 물론 이는 아주 단적인 예이고, 올바르게 표현하자면 다음과 같이 될 것입니다.

UNICODE 가 미리 정의된 경우 winnt.h에서 다음의 매크로는 화살표에 이끌려 다음과 같이 정의됩니다.

TCHAR --> wchar_t 

TEXT,__TEXT --> L 

_UNICODE가 미리 정의된 경우 tchar.h에서 다음의 매크로는 화살표에 이끌려 다음과 같이 정의됩니다.

TCHAR --> wchar_t 

_T,__T,_Text --> L 

쉽게 얘기해서 UNICODE는 SDK에서 쓰는 것이고 _UNICODE는 CRT에서 사용하는 것입니다.

우리가 알아야 할 것은 두 가지 모두 정의해야 한다는 점입니다.

------------------------------------------------------------------

_MBCS가 미리 정의된 경우 다음의 매크로는 화살표에 이끌려 다음과 같이 정의됩니다.

TCHAR --> char 

_T,__TEXT --> 사라짐 

위에서 언급한 무엇도 정의되지 않은 경우 다음의 매크로는 화살표에 이끌려 다음과 같이 정의됩니다.

TCHAR --> char 

_T, __TEXT --> 사라짐 

------------------------------------------------------------------

물론 위의 내용은 타입이나 리터럴의 경우만 언급한 것이고, 함수들 예를 들어, _tcscat 이 _strcat 또는 wcscat 또는 _mbscat 등으로 바뀌는 일도 발생합니다.


3.예제



4.참고

ATL Internals



- 2001.08.13 Smile Seo -
"ATL/COM" 카테고리의 다른 글
  • ActiveX를 무조건 다운로드 하게 하기 (0)2007/03/15
  • String Conversion Macro (0)2007/03/08
  • Unicode/MBCS(DBCS)/ANSI/TCHAR (0)2007/03/05
  • [ATL] 새로운 인터페이스 추가하기 (0)2007/03/05
  • COM 형식 라이브러리 사용하기 (0)2007/01/05
2007/03/05 16:56 2007/03/05 16:56
Posted by webdizen
Tags Ansi, MBCS, TCHAR, Unicode
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2680

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 웹 개발자
  • Application
  • 양주 가격
  • ComboBox
  • Conceptual Modeling
  • 다이얼로그
  • 마주앙 로젤
  • XHTML
  • Backlink
  • Singletion Pattern
  • 후처리
  • Tray
  • W3C
  • 노천극장
  • Testing
  • C++
  • Freeware
  • Akelos Framework
  • 라벨노 로러스
  • 페이지 폴트

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.