質問

たとえば、します:

wchar_t x;

に変換

unsigned short x;
役に立ちましたか?

解決

要するに、

:CにおいてCであってもよい++なし

広く。 C定義のwchar_tのtypedefとしてそれは短くてもよいので、UNIXでは、一般的に4バイト(それほど一般にショートしない)およびWindows 2である。

の下でCあなたが合法的にcharint

をオーバーロードすることができるように++、void foo(short x)またはvoid foo(wchar_t x)などのビルトインタイプのユニークです

他のヒント

Visual Studioプロジェクト内の関数呼び出しはwchar_t取って、両当事者にもかかわらずではないリンク、(UNICODEこのようなLPCTSTRとして、あるいは同等のタイプは、#defineで定義)されますので、この答えに遭遇する可能性があり、誰のために

、そしてときにDUMPBIN図書館の輸出機能const unsigned short *をとり、VSは、ビルトインタイプとしてあなたがwchar_tをオフに切り替えることができますことに注意してください。誰かが図書館でこれを変更し、あなたのプロジェクトで同じコンパイラスイッチをヒットしない、それはリンクしません。

このオプションは、「プロジェクトのプロパティ]> [C / C ++ /言語/組み込み型として扱うwchar_t型」の下に変更することができ、それはまた、「/ Zcの」オプションで変更することができます。

Cの場合、wchar_ttypedefあります。それはunsigned intの同義語であるか否か、それが全てでunsigned型であるかどうか、またはそれが4バイトであるか否かを、実装定義です。

はC ++で、wchar_t内蔵型区別されます。ここでは、あまりにも、その大きさと符号の有無は実装定義です。

wchar_t型は符号なしであることを規格で要求されていません。また、署名することができます。そして、同じサイズの別のタイプが存在しなければなりません。しかし、標準は、明示的に、他のタイプは短くなければならないと言うことはありません。

  

「その下型と呼ばれる他の整数型のものと同じサイズ、符号の有無と位置合わせ要件」(C ++ 98§3.9.1)。

でCはコンパイラは、これは通常STDDEF.H

で定義のtypedef、あります
いいえ、それはしていません。それはに変換「ワイド文字」。それはがあることを起こるかについて何らかの仮定を作るの特定のプラットフォームが間違っている、と敗北にの全体の目的の最初の場所でのwchar_tを持っています。

抽象化を使用してのポイントは、その基礎となる表現からタイプの意味論的な意味を分離することである。

必ずしもそうではありません。それは実装によって選択された4バイトの量、または実際に任意の他のサイズであってもよい。

これは、コンパイラに依存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top