> ## 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 预处理器定义

> Microsoft Game Development Kit on XBOX 预处理器定义

本文列出了 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                        | 该定义表示正在 PC 上使用 GDK 生成代码。                                                                                                                                                                                                                                                                                                         |
| \_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-CN/tools/tools-pc/visualstudio/gr-visualstudio-toc.md)
- [在 GDK 中使用 Clang/LLVM](/zh-CN/tools/tools-pc/visualstudio/gr-vs-clang.md)
- [为 XBOX Series X|S 与 XBOX One 配置 Visual Studio](/zh-CN/tools/tools-console/visualstudio/vs-cross-gen.md)
- [面向主机开发的 Visual Studio](/zh-CN/tools/tools-console/visualstudio/visualstudio.md)
- [用于 PC 游戏开发的 Visual Studio 项目模板](/zh-CN/tools/tools-pc/visualstudio/gr-vs-templates.md)
