이 항목에서는 Xbox의 Microsoft GDK(게임 개발 키트)에 적용되는 전처리기 정의를 나열합니다.
|
프로세서 정의 |
설명 |
|---|---|
| _GAMING_XBOX | 다음은 Xbox One에 대한 공식 정의입니다. #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로 대체되고 있습니다. _X86_ 및 _AMD64_와 같은 Windows 레거시 정의를 사용하지 마세요. |
| WINAPI_FAMILY | Microsoft 플랫폼 헤더는 winapifamily.h에 정의된 Windows 패밀리 및 파티션 매크로를 광범위하게 사용합니다. 단, 파티션은 변경될 수 있습니다(Windows 8.0 SDK와 Windows 8.1 SDK에서는 실제로 변경됩니다). 시간이 지나면서 새 파티션 및 패밀리 값이 추가되기도 합니다. 클라이언트 코드에는 PARTITION 값이나 WINAPI_FAMILY_PARTITION 매크로, WINAPI_FAMILY_ONE_PARTITION 매크로를 직접 사용해서는 안 됩니다. 클라이언트 코드에는 WINAPI_FAMILY의 특정 값을 찾는 것이 좋습니다. winapifamily.h의 Windows 8.1 SDK 버전에는 이 용도로 사용할 수 있는 확장된 주석 블록이 있습니다. |
Xbox 코드에서 다음의 Microsoft GDK(게임 개발 키트)를 사용하는 것이 모범 사례입니다.
#ifdef _GAMING_XBOX
// GDK on Xbox
#ifdef _GAMING_XBOX_SCARLETT
// Xbox Series X/S hardware
#elif _GAMING_XBOX_ONE
// Xbox One hardware
Microsoft GDK(게임 개발 키트)를 사용하여 빌딩하는 경우, Visual Studio IDE(Integrated development environment) Microsoft Build 규칙이 _GAMING_XBOX 및 WINAPI_FAMILY=WINAPI_FAMILY_GAMES을(를) 자동으로 정의합니다. Microsoft GDK(게임 개발 키트)를 빌드하는 개발자가 Visual Studio IDE를 사용하지 않는 경우에는 컴파일러 명령줄에서 이 같은 값을 제공해야 합니다.
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 게임 개발 키트를 사용할 때 'stock' x64 플랫폼에도 사용됩니다.
Microsoft 플랫폼 간 코드를 작성하는 경우, 일반적으로 다음의 구조도 적용할 수 있습니다.
#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