跳轉到主要內容
XBOX 的編譯器是 Visual Studio 隨附的 Visual C++ x64 編譯器。請使用 Visual Studio 2022 (17.12 或 17.14) 或最新的 Visual Studio 2026 更新。 XBOX 開發也支援 clang/LLVM for Windows v11 或更新版本。此工具組使用 Visual C/C++ Runtime。如果您使用 MSBuild,請使用 Visual Studio 2019 或 Visual Studio 2022 的 clang/LLVM 整合。 其他工具組與執行階段組合可能無法執行或通過認證。 如需升級 Visual C++ 程式碼的詳細資訊,請參閱 Visual C++ 移植與升級指南。
XBOX 工具只能搭配 Microsoft 程式資料庫 (PDB) 檔案作為偵錯符號使用。它不支援 LLVM .ld 檔案所發出的 CodeView 或 DWARF 偵錯資訊。

C++14、C++17 與 C++20 語言版本與功能

Visual Studio 2019、Visual Studio 2022 與 Visual Studio 2026 支援 C++11、C++14 與 C++17。Visual Studio 2022 與 Visual Studio 2026 也支援 C++20。

內建函式

Visual C++ 編譯器不支援 x64 內嵌組譯,但支援各式各樣的內建函式,以支援在 XBOX 開發中納入特殊指令集。
任何內建函式的使用,都假設您已確認目標平台支援這些指令。如果您未確認支援,應用程式會在執行階段擲回 invalid instruction 例外狀況。請特別注意,XBOX One (AMD Jaguar CPU) 支援 AVX 與 F16C,而 XBOX Series X|S (AMD Hercules CPU) 還支援 AVX2 與 FMA3。兩個平台都不支援 AVX-512 或更新的指令。
Visual Studio 支援 /arch:AVX 與 /arch:AVX2 參數,可啟用屬於 AVX 指令集標準一部分的 VEX 前置詞。請對所有 XBOX 應用程式使用此參數。如需詳細資訊,請參閱下列文章。

clang/LLVM 內建函式

clang/LLVM for Windows 工具組實作了許多與 MSVC 相同的內建函式,但存在一些關鍵差異:
  • clang/LLVM 與 GNUC 處理 SSE SIMD 類型的方式與 Visual C++ 和 Intel Compiler 不同。具體來說,__m128、__m128i 與 __m128d 類型是不透明類型而非結構,因此您無法建立使用這些類型的 C++ 多載函式。此差異也表示透過 __m128.m128_f32[0] 直接存取元素的程式碼無法在 clang/LLVM 上編譯。
因此,DirectXMath 在使用 clang/LLVM 建置時會定義 _XM_NO_XMVECTOR_OVERLOADS_。為了獲得更好的可攜性,您可以在程式碼中明確定義此巨集,以便對 MSVC 也強制執行。
  • clang/LLVM 的 cpuid 內建函式使用特殊標頭 #include <cpuid.h>。__cpuid 內建函式採用不同的參數清單,而 __cpuid_count 相當於 MSVC 的 __cpuidex,但同樣採用不同的參數清單。

呼叫慣例

x64 原生程式碼的預設呼叫慣例為 __fastcall,詳細資訊請參閱 Microsoft Docs。在 x64 上,__cdecl 與 __stdcall 呼叫慣例只是 __fastcall 的別名。 MSVC 與 clang/LLVM 編譯器支援 x86 與 x64 程式碼的 __vectorcall 呼叫慣例。如需詳細資訊,請參閱 Visual C++ Team Blog: Introducing ‘Vector Calling Convention’ 與 Microsoft Docs。

自動向量化與自動平行化

Visual C++ 最佳化工具可以透過自動向量化,將純量整數或浮點計算變更為 SIMD 指令。自動向量化會隨 /O2 或 /Ox 自動啟用。您可以使用 #pragma loop(no_vector) 為特定迴圈停用它。 這些編譯器工具組也支援使用執行緒對迴圈進行自動平行化。使用 /Qpar 啟用自動平行化。您可以使用 #pragma (loop(hint_parallel(n))) 為特定迴圈提供提示。如需詳細資訊,請參閱下列文章。

回報錯誤

Visual C++ 編譯器的錯誤請 (盡可能) 透過 Visual Studio 的 回報問題… 進行回報。請參閱 Microsoft Docs 與開發人員社群網站。如需為編譯器建立良好錯誤報告的詳細資訊,請參閱此頁面。
如果需要更多 NDA 資訊才能重現問題,您可以在公開報告問題中新增標示為「僅限 Microsoft」的註解。
若要回報 clang/LLVM for Windows 編譯器的錯誤,請使用 https://bugs.llvm.org/ 若要回報 Microsoft 標準 C++ 程式庫 (又稱 STL) 的錯誤,請使用 https://github.com/microsoft/STL/issues 一如往常,對於需要提報的重大問題,歡迎與您的客戶經理聯絡。

資源

最後修改於 2026年10月8日