/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 中定義為 typedef
的 unsigned short
。 (Microsoft實作會在 stddef.h 和其他標準標頭所包含的另一個標頭中定義它。
不建議 /Zc:wchar_t- 因為C++標準需要 wchar_t
內建類型。 使用 typedef
版本可能會造成可攜性問題。 如果您從舊版 Visual Studio 升級,並遇到編譯程式錯誤 C2664,因為程式代碼嘗試隱含地轉換成wchar_t
unsigned short
,建議您變更程式代碼以修正錯誤,而不是設定 /Zc:wchar_t-。
/Zc:wchar_t 選項預設會在C++編譯中開啟,並在 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 開發環境中設定這個編譯器選項
開啟專案的 [屬性頁] 對話方塊。 如需詳細資料,請參閱在 Visual Studio 中設定 C ++ 編譯器和組建屬性。
選取 [組態屬性>C/C++>Language] 頁面。
修改將 wchar_t視為內建 Type 屬性。