2010-06-01 45 views
7

Sự khác biệt khác nhau giữa hai ký hiệu TCHAR_TCHAR loại được xác định trong tiêu đề Windows tchar.h là gì? Giải thích bằng các ví dụ. Mô tả ngắn gọn các tình huống mà bạn sẽ sử dụng TCHAR thay vì _TCHAR trong mã của bạn. (10 điểm)Phân biệt giữa TCHAR và _TCHAR

+3

tại sao câu hỏi của bạn có vẻ giống như một bài tập về nhà? bạn không thể dành thời gian để nói lại bài kiểm tra của bạn và làm cho nó nghe có vẻ nhân cách hơn? –

+6

Tôi thực sự mất thêm thời gian và đã đi ra khỏi con đường của tôi để làm cho nó âm thanh như bài tập về nhà. Tiring để xem tất cả các idiosyncrasies nhỏ trong Windows tiêu đề không có vần điệu hoặc lý do. –

+1

'tchar.h' không phải là một phần của Windows SDK, nhưng là một phần của Microsoft CRT ... –

Trả lời

7

Tìm thấy câu trả lời của bạn ở đây:

MSDN Forums >> Visual Studio Developer Center >> TCHAR vs _TCHAR

TCHAR và _TCHAR là giống hệt nhau, mặc dù kể từ TCHAR không có một dấu gạch dưới hàng đầu , Microsoft không được phép Ltd. nó như là một từ khóa (hãy tưởng tượng nếu bạn có một biến được gọi là TCHAR. Hãy suy nghĩ điều gì sẽ xảy ra ). Do đó TCHAR sẽ không đượC#defined khi Tiện ích mở rộng ngôn ngữ bị vô hiệu hóa (/ Za).

TCHAR được định nghĩa trong winnt.h (bạn sẽ nhận được khi bạn #include ) và cũng là tchar.h trong/Ze. _TCHAR chỉ có sẵn trong tchar.h (cũng có #defines _TSCHAR và _TUCHAR). Đó là những biến thể được ký/ký tên của kiểu dữ liệu TCHAR bình thường.

9

Ngoài những gì @RussC nói, TCHAR được sử dụng bởi các API Win32 và được dựa trên UNICODE xác định, trong khi _TCHAR được sử dụng bởi thời gian chạy C và được dựa trên _UNICODE xác định để thay thế. UNICODE_UNICODE thường được xác định/bỏ qua cùng nhau, làm cho TCHAR_TCHAR hoán đổi cho nhau, nhưng đó không phải là yêu cầu. Chúng được phân tách theo ngữ nghĩa để sử dụng bởi các khung công tác khác nhau.

Các vấn đề liên quan