C'è qualche differenza pratica tra WCHAR
e wchar_t
?Qual è la differenza tra "WCHAR" e "wchar_t"?
risposta
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
).
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 :)
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
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.
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
- 1. Qual è la differenza tra TCHAR e WCHAR?
- 2. Perché si chiama "wchar_t" e non semplicemente "wchar"?
- 3. Qual è la differenza tra = e: =
- 4. Qual è la differenza tra Verilog! e ~?
- 5. Qual è la differenza tra? : e ||
- 6. qual è la differenza tra [[], []] e [[]] * 2
- 7. Qual è la differenza tra $ e $$?
- 8. Qual è la differenza tra ("") e (null)
- 9. Qual è la differenza tra dict() e {}?
- 10. Qual è la differenza tra " " e ""?
- 11. Qual è la differenza tra {0} e ""?
- 12. Qual è la differenza tra `##` e `hashCode`?
- 13. Qual è la differenza tra {0} e +?
- 14. Qual è la differenza tra .ToString() e + ""
- 15. qual è la differenza tra:.! e: r !?
- 16. Qual è la differenza tra glib gunichar e wchar_t e quale è meglio per le soluzioni multipiattaforma?
- 17. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 18. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 19. Qual è la differenza tra il callback e la promessa
- 20. Qual è la differenza tra la sezione .got e .got.plt?
- 21. Qual è la differenza tra la lista() e []
- 22. Qual è la differenza tra GHC e la piattaforma Haskell?
- 23. Qual è la differenza tra sé e la finestra?
- 24. Qual è la differenza tra la cartella vim72 e vimfiles?
- 25. Qual è la differenza tra la serratura e RLock
- 26. Qual è la differenza tra la funzione() {}() e function() {}()
- 27. Qual è la differenza tra la crittografia SHA e AES?
- 28. Qual è la differenza tra la [OptionalField] e [NonSerialized]
- 29. Qual è la differenza tra Chisel e Lava e CLaSH?
- 30. Qual è la differenza tra queste funzioni
È 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. –