> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XBOX 上 GDK 的前置處理器定義

> XBOX 上 Microsoft Game Development Kit 的前置處理器定義

本文列出 XBOX 上 Microsoft Game Development Kit (GDK) 特有的前置處理器定義。

| 前置處理器定義 | 描述 |
| - | - |
| \_GAMING\_XBOX | XBOX One 或 XBOX Series X\|S 的正式定義。#ifdef \_GAMING\_XBOX // Microsoft Game Development Kit (GDK) on XBOX. ... |
| \_GAMING\_XBOX\_XBOXONE | 此定義表示在 XBOX One 上的 GDK 進行建置。 |
| \_GAMING\_XBOX\_SCARLETT | 此定義表示在 XBOX Series X\|S 上的 GDK 進行建置。 |
| \_GAMING\_DESKTOP | 此定義表示使用 GDK 在 PC 上進行建置。 |
| \_M\_X64、\_M\_IX86、\_M\_ARM64 與 \_M\_ARM | 撰寫特定於處理器架構而非平台的程式碼時，請使用這些定義。對於 XBOX 360，對等的定義為 \_M\_PPCBE。\_M\_AMD64 是 \_M\_X64 的別名，也是原始名稱。它正逐步淘汰，改用 \_M\_X64。請勿使用 Windows 舊版定義，例如 *X86* 與 *AMD64*。 |
| WINAPI\_FAMILY | Microsoft 平台標頭大量使用 winapifamily.h 中定義的 Windows 系列與分割區巨集。請記住，分割區可能會變更 (事實上在 Windows 8.0 SDK 與 Windows 8.1 SDK 之間確實有變更)。隨著時間推移，也會新增新的 PARTITION 與 FAMILY 值。用戶端程式碼絕對不應直接使用 PARTITION 值、WINAPI\_FAMILY\_PARTITION 巨集或 WINAPI\_FAMILY\_ONE\_PARTITION 巨集。用戶端程式碼尋找 WINAPI\_FAMILY 的特定值是合理的。Windows 8.1 SDK 版本的 winapifamily.h 有一個涵蓋此用法的擴充註解區塊。 |

針對 XBOX 上的 Microsoft Game Development Kit (GDK) 程式碼，請使用下列前置處理器定義。

```cpp theme={null}
#ifdef _GAMING_XBOX
// GDK on Xbox
```

```cpp theme={null}
#ifdef _GAMING_XBOX_SCARLETT
// Xbox Series X|S hardware
#elif _GAMING_XBOX_ONE
// Xbox One hardware
```

當您使用 Microsoft Game Development Kit (GDK) 建置時，Visual Studio 整合式開發環境 (IDE) 的 Microsoft Build 規則會自動定義 `_GAMING_XBOX` 與 `WINAPI_FAMILY=WINAPI_FAMILY_GAMES`。不使用 Visual Studio IDE 針對 Microsoft Game Development Kit (GDK) 進行建置的開發人員，必須在編譯器命令列上提供這些值。

## Gaming.Xbox.XboxOne.x64

```
/D_GAMING_XBOX /D_GAMING_XBOX_XBOXONE /DWINAPI_FAMILY=WINAPI_FAMILY_GAMES  
```

## Gaming.Xbox.Scarlett.x64

```
/D_GAMING_XBOX /D_GAMING_XBOX_SCARLETT /DWINAPI_FAMILY=WINAPI_FAMILY_GAMES  
```

## Gaming.Desktop.x64

```
/D_GAMING_DESKTOP /DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP
```

> 當您使用 Microsoft Game Development Kit 時，這些定義也適用於「傳統」x64 平台。

撰寫 Microsoft 跨平台程式碼時，您可以使用下列結構。

```cpp theme={null}
    #if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)
    // This code is for Win32 desktop apps.
    #elif WINAPI_FAMILY == WINAPI_FAMILY_GAMES
    // This code is for the Microsoft Game Development Kit (GDK) (could also use _GAMING_XBOX if only targeting Xbox).
    #elif WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
    // This code is for Windows phone 8.x.
    #elif WINAPI_FAMILY == WINAPI_FAMILY_APP
    // This code is for Microsoft Store apps for 8.x.
    #elif WINAPI_FAMILY == WINAPI_FAMILY_TV_TITLE
    // This code is for Xbox One Game OS/XDK.
    #elif WINAPI_FAMILY == WINAPI_FAMILY_TV_APP
    // This code is for Xbox One System OS/ADK.
    #else
    #error Unknown WINAPI_FAMILY value
    #endif  
```


## Related topics

- [Visual Studio (內容)](/zh-TW/tools/tools-pc/visualstudio/gr-visualstudio-toc.md)
- [為 XBOX Series X|S 與 XBOX One 設定 Visual Studio](/zh-TW/tools/tools-console/visualstudio/vs-cross-gen.md)
- [搭配 GDK 使用 Clang/LLVM](/zh-TW/tools/tools-pc/visualstudio/gr-vs-clang.md)
- [Visual C++ 編譯器與連結器參數建議](/zh-TW/tools/tools-console/visualstudio/compiler-switch-recommendations.md)
- [PC 遊戲開發的 Visual Studio 專案範本](/zh-TW/tools/tools-pc/visualstudio/gr-vs-templates.md)
