CRT functions not supported in Universal Windows Platform apps
5 minutes to read
Many C runtime (CRT) functions aren't available when you build Universal Windows Platform (UWP) apps. Sometimes workarounds are available—-for example, you can use Windows Runtime or Win32 APIs. In other cases, CRT functions have been banned because the corresponding features or the supporting APIs aren't applicable to UWP apps. To look for an alternative method that's supported for the Windows Runtime, see Alternatives to Windows APIs in UWP apps.
The following table lists the CRT functions that are unavailable when you build UWP apps. It indicates any workarounds that apply.
Unsupported CRT Functions
These functions were obsolete in previous versions of the CRT. Also, the corresponding Win32 APIs are not available for UWP apps.
These functions are obsolete or are not thread-safe.
The functionality is not available in UWP apps. A UWP app cannot invoke another UWP app or a desktop app.
These functions are typically used to work with the heap. However, corresponding Win32 APIs are not supported in UWP apps. And, apps can no longer create or use private heaps.
No workaround. However, _heapwalk is available in the DEBUG CRT, for debugging purposes only. These functions can't be used in apps that are uploaded to the Microsoft Store.
The following functions are available in the CRT for UWP apps. However, use them only when you can't use the corresponding Win32 or Windows Runtime APIs, such as when you're porting large code bases:
Single-byte string functions—for example, strcat, strcpy, strlwr, and so on.
Make your UWP apps strictly Unicode because all Win32 APIs and Windows Runtime APIs that are exposed use Unicode character sets only. Single-byte functions were left for porting large code bases, but should otherwise be avoided. The corresponding wide char functions should be used instead when possible.
Stream IO and low-level file IO functions—for example, fopen, open, and so on.
These functions are synchronous, which isn't recommended for UWP apps. In your UWP apps, use asynchronous APIs to open, read from, and write to files to prevent locking of the UI thread. Examples of such APIs are the ones in the Windows::Storage::FileIO class.
Windows 8.x Store apps and Windows Phone 8.x apps
Both the previously mentioned APIs and the following APIs are unavailable in Windows 8.x Store apps and Windows Phone 8.x apps.
Threading Win32 APIs are not available in Windows 8.x Store apps.
Use the Windows Runtime Windows::System::Threading::ThreadPool or concurrency::task instead.
The concept of a working directory doesn't apply to Windows 8.x Store apps.