Domanda

per esempio, fa:

wchar_t x;

tradurre in:

unsigned short x;
È stato utile?

Soluzione

In breve:. In C può essere in C ++ non

Ampiamente. C definisce wchar_t come typedef ma in Unix è generalmente 4 byte (quindi generalmente non breve) e in Windows 2 quindi potrebbe essere breve.

In C ++ è unico tipo built-in come char o int, in modo da poter legalmente sovraccarico void foo(short x) e void foo(wchar_t x)

Altri suggerimenti

Per chiunque altro che può venire attraverso questa risposta perché chiamate di funzione nel progetto di Visual Studio non si collegherà, nonostante entrambe le parti di prendere wchar_t (o un tipo simile, come ad esempio LPCTSTR con Unicode #defined), e quando si DUMPBIN la della biblioteca esportazioni la funzione prende const unsigned short *, essere consapevoli che VS permette di spegnere wchar_t come un tipo built-in. Se qualcuno cambia questo in una biblioteca, e non si ha colpito la stessa opzione del compilatore nel progetto, non sarà collegamento.

Questa opzione può essere modificata in "Proprietà progetto> C / C ++ / lingua / wchar_t Trattare come tipo predefinito", può anche essere modificata tramite l'opzione "/ Zc".

Per C, wchar_t è un typedef. Se è sinonimo di unsigned int, se si tratta di un tipo senza segno affatto, o se è 4 byte, dipende dall'implementazione.

In C ++, wchar_t è un distinto tipo incorporato. Anche qui, le sue dimensioni e signedness è definito dall'implementazione.

wchar_t non è richiesto dalla norma per essere firmato. Può anche essere firmato. E ci deve essere un altro tipo della stessa dimensione; ma la norma non dice esplicitamente che questo altro tipo deve essere breve.

  

"della stessa dimensione, requisiti signedness, e allineamento come uno degli altri tipi integrali, chiamati suo tipo sottostante" (C ++ 98 §3.9.1).

In questo compilatori C è un typedef, normalmente definita in stddef.h

No, non è così. E si traduce in 'una vasta personaggio.' Fare qualsiasi ipotesi su ciò che sembra essere su una piattaforma particolare è corretto, e vanifica il intero scopo di avere un wchar_t in primo luogo.

Il punto di utilizzare un'astrazione è di separare il significato semantico del tipo dalla sua rappresentazione sottostante.

Non necessariamente; potrebbe essere una quantità di 4 byte, o qualsiasi altro formato scelto dal attuazione.

Dipende dal compilatore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top