2009-02-18 59 views

Trả lời

12

Vâng, một khác biệt thực tế sẽ là WCHAR không tồn tại trên nền tảng của tôi. Chỉ dành cho Windows (và không có ý định chuyển chương trình sang nền tảng khác) và với các tiêu đề cần thiết, nó giống nhau (vì WCHAR chỉ là typedef).

0

Thực tế nói không có nhiều khác biệt. Cả hai đều đại diện cho cùng một loại cơ bản. Giá trị chiều rộng 2 byte.

LIBT sẽ được một thời gian ngắn để cung cấp cho bạn sự khác biệt điên rồ thực sự giữa các nền tảng khác nhau một chuẩn C++ :)

+2

Điều quan trọng cần lưu ý rằng điều này chỉ hợp lệ trên Windows. WCHAR là một typedef đặc trưng cho Windows (hoặc nó là một #define?), Và sizeof (wchar_t) phụ thuộc vào nền tảng này. Trên Linux (và, IIRC, Solaris), ví dụ, nó là 4 byte. –

15

wchar_t là một loại riêng biệt, được xác định bởi các tiêu chuẩn C++.

WCHARkhông tiêu chuẩn và theo như tôi biết, chỉ tồn tại trên Windows. Tuy nhiên, nó chỉ đơn giản là một typedef (hoặc có thể là một macro) cho wchar_t, do đó, nó không có sự khác biệt thực tế.

phiên bản cũ của MSVC không có wchar_t như một kiểu thay vì hạng nhất đó là chỉ đơn giản là một typedef cho short

Nhiều khả năng, Microsoft đã giới thiệu WCHAR để đại diện cho một "loại nhân vật rộng" trên bất kỳ phiên bản trình biên dịch, có hay không wchar_t tồn tại dưới dạng kiểu gốc.

Bạn nên sử dụng wchar_t trong mã của mình. Đó là những gì nó cho.

4

Có ai biết cách cũ WCHAR không? Tôi sẽ tưởng tượng nó có ngày ít nhất là Windows NT 3.1. Tôi muốn suy đoán rằng khi Microsoft bắt đầu sử dụng WCHAR trong tiêu đề Windows, wchar_t không được xác định trong tiêu chuẩn C hoặc C++. Nêu tôi sai vui long chân chỉnh tôi.

Microsoft ở vị trí không thể phủ nhận là phải hỗ trợ khai báo và tiêu đề a) phải hoạt động trong cả C và C++; b) biên dịch theo các kiến ​​trúc rất khác nhau (i86, MIPS, PowerPC, Alpha, ...) và c) phải tương thích ngược với mã nguồn được viết cho các trình biên dịch 15 tuổi trở lên. Ngoài ra, bất kỳ thay đổi đột phá nào và hàng nghìn cuốn sách, sách hướng dẫn tham khảo, tài liệu trực tuyến, v.v. được xuất bản trong hai thập kỷ qua sẽ đột nhiên trở thành BÀI HÁT.

WCHAR là giao diện — khi nó được xuất bản, nó được viết bằng đá, ngay cả khi không cần mã mới.

0

typedef wchar_t WCHAR; // wc, nhân vật UNICODE 16-bit

này được định nghĩa trong winnt.h.So ban đầu nó là WCHAR wchar_t là abbrivation để nó .Bạn có thể sử dụng wcscat, wcslen vv chức năng cho cả

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