On 2020-04-16 21:38, Martin Storsjö wrote:
On Thu, 16 Apr 2020, Steve Lhomme wrote:

Based on this documentation some APIs are not allowed in UWP builds
https://docs.microsoft.com/en-us/cpp/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps?view=vs-2019

The documentation is old and may not apply to Win10 but it's still the one
listed for UCRT compatibility :
https://docs.microsoft.com/en-us/cpp/c-runtime-library/compatibility?view=vs-2019
---
mingw-w64-headers/crt/corecrt.h | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/mingw-w64-headers/crt/corecrt.h b/mingw-w64-headers/crt/corecrt.h
index 8f9f6b42..76bb2ebe 100644
--- a/mingw-w64-headers/crt/corecrt.h
+++ b/mingw-w64-headers/crt/corecrt.h
@@ -491,6 +491,13 @@ typedef struct threadlocaleinfostruct {
#define __crt_typefix(ctype)
#endif

+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
+#define _CRT_ALLOW_API_FAMILY_APP
+#elif WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+#define _CRT_ALLOW_API_FAMILY_DESKTOP
+#endif

This doesn't seem right.

If WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP, then WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) is true, and _CRT_ALLOW_API_FAMILY_DESKTOP never gets defined.

You're right. WINAPI_FAMILY_DESKTOP_APP matches both. So only _CRT_ALLOW_API_FAMILY_APP is defined.

The goal of _CRT_ALLOW_API_FAMILY_APP is to only select API's allowed for "apps" (WINAPI_PARTITION_APP), so the opposite of what WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) provides. In the end I don't use it.

So I only need to define _CRT_ALLOW_API_FAMILY_DESKTOP which should be defined when we're not in WINAPI_FAMILY_APP. But the WINAPI_FAMILY_PARTITION() macro doesn't allow selecting only WINAPI_FAMILY_APP.

So in the end I need to switch the code to define _CRT_ALLOW_API_FAMILY_APP and then hide some API's when it's defined.

I guess it would be ok if you'd change the #elif into #endif + #if.

// Martin



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to