jww*_*jww 6 visual-studio visual-c++ c-preprocessor windows-store-apps win-universal-app
我们有一个C++库,我们收到了一些支持UWP的请求.我正在调查这个港口.我正在浏览Microsoft的C/C++预处理器参考 Visual Studio 2015的预定义宏,但我没有看到任何与UWP相关的内容.
我找到了如何:在通用Windows平台应用程序中使用现有C++代码,但它们看起来像那些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 Runtime最新版本的特定内容.我以为我们可能能够通过检测Windows 10和UWP _WIN32_WINNT_WIN10,但是如果我正在解析正确使用 MSDN中的Windows标头,则不会出现这样的宏.
此外,一些API仅适用于Windows 10和UWP Windows应用商店应用,因此我们需要检测何时缺少某些API(即Windows Phone 8,Windows Store 8,Windows 10和Windows Store 10).
用于检测UWP的预处理器宏是什么?
一个相关的问题可能是检测Windows Kit 8.0和Windows Kit 8.1 SDK,但我目前还不确定.
你提到的宏可以追溯到Windows 8,但是对于服务器应用程序和驱动程序有一些补充,它们仍然是用于通用Windows应用程序的宏.
请注意,特定于UWP的Visual C++编译器中没有内置的预定义宏.UWP风格的所有宏都在winapifamily.hWindows 10 SDK附带的标头中定义.您可以在作为SDK的一部分安装的共享包含文件目录中找到它,例如C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared\winapifamily.h,模块化您的安装驱动器和SDK版本.
这些评论winapifamily.h很广泛,并且很好地描述了这些宏所需的每个用例.您可以将它们用于条件编译,或者通过使用_WINAPI_DEPRECATED_DECLARATIONon函数声明为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
Run Code Online (Sandbox Code Playgroud)
这只是一个(我未经测试)根据读取标题中的内容制作SDK版本特定代码的方法.这与编译器版本(在_MSC_VER或中定义_MSC_VER_FULL)或平台NTDDI_*值无关.
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |