/Zc:wchar_t (wchar_t 是原生類型)

根據 C++ 標準將 wchar_t 解析為內建類型。

語法

/Zc:wchar_t [ - ]

備註

如果 /Zc:wchar_t 開啟, wchar_t 則為編譯為 C++ 程式碼中內建整數類型的關鍵字。 如果 已指定 /Zc:wchar_t- (含減號),或在編譯為 C 的程式碼中, wchar_t 則不是內建類型。 相反地, wchar_t 在標準標頭 stddef.h 中定義為 typedefunsigned short 。 (Microsoft 實作會在 stddef.h 和其他標準標頭所包含的另一個標頭中定義它。

我們不建議 /Zc:wchar_t- ,因為 C++ 標準需要 wchar_t 內建類型。 使用 typedef 版本可能會造成可攜性問題。 如果您從舊版 Visual Studio 升級,並遇到編譯器錯誤 C2664 ,因為程式碼嘗試隱含地轉換成 unsigned shortwchar_t ,建議您變更程式碼以修正錯誤,而不是設定 /Zc:wchar_t-

C++ 編譯預設會開啟 /Zc:wchar_t 選項,並在 C 編譯中忽略。 /permissive- 選項不會影響 /Zc:wchar_t

Microsoft 將 wchar_t 實作為二位元的不帶正負號值。 它會對應至 Microsoft 特定的原生類型 __wchar_t 。 如需 的詳細資訊 wchar_t ,請參閱 資料類型範圍 基本類型

如果您撰寫的新程式碼必須與仍然使用 typedef 版本的 wchar_t 舊版程式碼交互操作,您可以同時提供 和 __wchar_t 變化 wchar_t 的多載 unsigned short ,以便您的程式碼可以與 以 /Zc:wchar_t 編譯的程式碼連結,或不使用它編譯的程式碼。 否則,您必須提供兩個不同的程式庫組建,一個具有 ,另一個沒有 啟用 /Zc:wchar_t 。 縱使在這種情況,我們仍然建議您以編譯新程式碼所使用的相同編譯器建置較舊的程式碼。 切勿混合不同編譯器所編譯的二進位檔。

指定 /Zc:wchar_t時 會定義_WCHAR_T_DEFINED _NATIVE_WCHAR_T_DEFINED 符號。 如需詳細資訊,請參閱 Predefined Macros

如果您的程式碼使用編譯器 COM 全域函式,因為 /Zc:wchar_t 預設為開啟,建議您將 comsupp.lib 的明確參考變更為 comsupp.lib(從 批註 pragma 或命令列上)變更為 comsuppw.lib 或 comsuppwd.lib。 (如果您必須使用 /Zc:wchar_t- 編譯 ,請使用 comsupp.lib.)如果您包含 comdef.h 標頭檔,則會為您指定正確的程式庫。 如需編譯器 COM 支援的相關資訊,請參閱 編譯器 COM 支援

當您編譯 C 程式 wchar_t 代碼時,不支援內建類型。 如需 Visual C++ 一致性問題的詳細資訊,請參閱 非標準行為

在 Visual Studio 開發環境中設定這個編譯器選項

  1. 開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性

  2. 選取 [ 組態屬性 > C/C++ > 語言] 頁面。

  3. 修改將 wchar_t視為內建 Type 屬性。

若要以程式方式設定這個編譯器選項

另請參閱

/Zc (一致性)