/Zc:wchar_t (wchar_t をネイティブ型として認識)

wchar_t を、C++ 標準に従って組み込み型として解析します。 /Zc:wchar_t は既定でオンになります。

/Zc:wchar_t[-]

解説

/Zc:wchar_t がオンの場合、wchar_t は Microsoft 固有のネイティブ型 __wchar_t に割り当てられます。 /Zc:wchar_t- (マイナス記号付き) を指定すると、wchar_t は unsigned short の typedef に割り当てられます (Visual C++ 6.0 以前では、wchar_t は、組み込み型として実装されていたのではなく、unsigned short の typedef として wchar.h で宣言されていました)。C++ 標準では wchar_t は組み込み型である必要があるため、/Zc:wchar_t- はお勧めしません。 typedef バージョンを使用すると、移植性の問題が発生することがあります。 以前のバージョンの Visual C++ からアップグレードしているとき、コードが wchar_t を unsigned short に暗黙的に変換しようとしたために C2664 コンパイル エラーが発生した場合は、/Zc:wchar_t- を設定するのではなく、コードを変更してエラーを修正することをお勧めします。

Microsoft では、wchar_t が 2 バイトの符号なしの値として実装されます。 wchar_t の詳細については、「データ型の範囲」および「基本型 (C++)」を参照してください。

wchar_t の typedef バージョンが使用されている以前のコードと相互運用する必要があるコードを新しく記述する場合は、wchar_t の unsigned short バリエーションと __wchar_t バリエーションの両方に対してオーバーロードを指定できます。これにより、新しいコードは、/Zc:wchar_t を使用してコンパイルされるコード、または使用せずにコンパイルされるコードとリンクできます。 これ以外の場合は、/Zc:wchar_t を使用するライブラリ ビルドと、使用しないライブラリ ビルドの 2 つの異なるビルドを指定する必要があります。 この場合も、以前のコードのビルドには、新しいコードをコンパイルするときに使用するコンパイラを使用することをお勧めします。 さまざまなコンパイラでコンパイルされたバイナリを混在させないでください。

/Zc:wchar_t を指定すると、_WCHAR_T_DEFINED シンボルと _NATIVE_WCHAR_T_DEFINED シンボルが定義されます。 詳細については、「定義済みマクロ」を参照してください。

コードでコンパイラ COM グローバル関数が使用されている場合は、/Zc:wchar_t が既定でオンになったため、コメント プラグマまたはコマンド ラインから comsupp.lib への明示的な参照は、comsuppw.lib または comsuppwd.lib のいずれかへの参照に変更します (/Zc:wchar_t- でコンパイルする必要がある場合は、comsupp.lib を使用します)。comdef.h のヘッダー ファイルを含めると、適切なライブラリが自動的に指定されます。 コンパイラ COM サポートについては、「コンパイラ COM サポート」を参照してください。

wchar_t 型は、C コードをコンパイルするときはサポートされません。 Visual C++ の準拠の問題の詳細については、「非標準動作」を参照してください。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、「プロジェクトのプロパティの操作」を参照してください。

  2. 左ペインで、[構成プロパティ][C/C++] の順に展開し、[言語] を選択します。

  3. [wchar_t をビルトイン型として扱う] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

参照

関連項目

/Zc (準拠)