2009-02-18 5 views

risposta

12

Bene, una differenza pratica sarebbe che WCHAR non esiste sulla mia piattaforma. Solo per Windows (e senza l'intenzione di portare mai il programma su un'altra piattaforma) e con le intestazioni necessarie incluse, è lo stesso (dal WCHAR è solo un typedef).

0

In pratica non c'è molta differenza. Entrambi rappresentano lo stesso tipo sottostante. Un valore di larghezza di 2 byte.

LIBT sarà prossimamente invia i reali differenze folli tra le varie piattaforme di C++ normali :)

+2

È importante notare questo è valido solo su Windows. WCHAR è un typedef specifico di Windows (o è un #define?) E sizeof (wchar_t) dipende dalla piattaforma. Su Linux (e, IIRC, Solaris), ad esempio, sono 4 byte. –

15

wchar_t è un tipo distinto, definito dallo standard C++.

WCHAR è non standard e, per quanto ne so, esiste solo su Windows. Tuttavia, è semplicemente un typedef (o forse una macro) per wchar_t, quindi non fa alcuna differenza pratica.

Le vecchie versioni di MSVC non avevano wchar_t come un tipo, invece di prima classe è stato semplicemente un typedef per short

Molto probabilmente, Microsoft ha introdotto WCHAR per rappresentare un "tipo di carattere esteso" attraverso qualsiasi versione del compilatore, se wchar_t esisteva o meno come tipo nativo.

Si dovrebbe usare wchar_t nel codice però. Ecco a cosa serve

4

Qualcuno sa quanti anni WCHAR è? Immagino che risale ad almeno Windows NT 3.1. Immagino che quando Microsoft ha iniziato a utilizzare WCHAR nelle intestazioni di Windows, wchar_t non è stato definito nello standard C o C++. Per favore correggimi se sbaglio.

Microsoft si trova nella non invidiabile posizione di dover supportare dichiarazioni e intestazioni che a) devono funzionare in C e C++; b) compilare in architetture molto diverse (i86, MIPS, PowerPC, Alpha, ...) ec) deve essere retrocompatibile con il codice sorgente scritto per compilatori di età superiore a 15 anni. Inoltre, eventuali cambiamenti improvvisi e migliaia di libri, manuali di riferimento, documentazione online, ecc. Pubblicati negli ultimi due decenni sarebbero improvvisamente diventati SBAGLIATI.

WCHAR è un'interfaccia, una volta pubblicata è stata scritta in pietra, anche se non è necessaria per il nuovo codice.

0

typedef wchar_t WCHAR; // wc, carattere UNICODE 16 bit

questo è definito in winnt.h.So originariamente è WCHAR wchar_t è abbrivation ad esso .You può usato wcscat, wcslen ecc funzioni sia

Problemi correlati