gpt4 book ai didi

visual-studio - 通用 Windows 平台的预处理器定义?

转载 作者:行者123 更新时间:2023-12-04 15:09:21 26 4
gpt4 key购买 nike

我们有一个 C++ 库,我们收到了一些支持 UWP 的请求。我现在正在调查港口。我正在浏览 Microsoft 的 C/C++ Preprocessor Reference | Predefined Macros对于 Visual Studio 2015,但我没有看到任何与 UWP 相关的内容。

我找到了 How to: Use Existing C++ Code in a Universal Windows Platform App ,但它们看起来像那些 Metro UI 应用程序的旧定义:

  • WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PC_APP)
  • WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
  • WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  • WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

  • 我希望看到特定于 Windows 运行时最新版本的内容。我以为我们可以通过 _WIN32_WINNT_WIN10 检测到 Windows 10 和 UWP ,但如果我正在解析 Using the Windows Headers,则不会出现这样的宏从 MSDN 正确。

    还有 some APIs are only available for Windows 10 and UWP Windows Store apps ,因此我们需要检测何时缺少某些 API(即 Windows Phone 8、Windows Store 8、Windows 10 和 Windows Store 10)。

    用于检测 UWP 的预处理器宏是什么?

    一个相关的问题可能是 Detect Windows Kit 8.0 and Windows Kit 8.1 SDKs ,但我现在不确定。

    最佳答案

    您提到的宏可能可以追溯到 Windows 8,但添加了一些服务器应用程序和驱动程序,它们仍然是用于通用 Windows 应用程序的宏。

    请注意,Visual C++ 编译器中没有内置特定于 UWP 的预定义宏。 UWP 风格的所有宏都在 winapifamily.h 中定义。 Windows 10 SDK 附带的 header 。您可以在作为 SDK 一部分安装的共享包含文件目录中找到它,例如,C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared\winapifamily.h ,以您的安装驱动器和 SDK 版本为模。

    评论在 winapifamily.h是广泛的,并且很好地描述了这些宏所需的每个用例。您可以将它们用于条件编译,或使用 _WINAPI_DEPRECATED_DECLARATION 为 UWP 不兼容代码设置弃用警告。关于函数声明。

    编辑以添加示例:

    在包含 winapifamily.h 之后的代码中,您可以打开在特定版本的 Windows SDK 中定义的宏来执行特定于该版本的操作,如下所示:

    #include <winapifamily.h>
    // ...
    #if defined (WINAPI_FAMILY_SYSTEM)
    // WINAPI_FAMILY_SYSTEM is new to Windows 10, so do Windows 10-specific
    // calls here
    #elif (WINAPI_PARTITION_APP == 1)
    // This value is forced to 1 in Windows 8.1, but it's different in
    // Windows 8.0 so make Windows 8.1-specific calls here
    #else
    // Make Windows 8.0-specific calls here
    #endif

    这只是一种(未经我测试)根据读取 header 中的内容制作特定于 SDK 版本的代码的方法。这与编译器版本(在 _MSC_VER_MSC_VER_FULL 中定义)或平台 NTDDI_* 无关。值。

    关于visual-studio - 通用 Windows 平台的预处理器定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36072350/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com