СовместимостьCompatibility

Универсальная библиотека времени выполнения C (UCRT) поддерживает большинство стандартных библиотек C, необходимых для соответствия C++.The Universal C Runtime Library (UCRT) supports most of the C standard library required for C++ conformance. Он реализует библиотеку C99 (ISO/IEC 9899:1999) с определенными исключениями:It implements the C99 (ISO/IEC 9899:1999) library, with certain exceptions:

  • строгое совместимость типов в <complex.h> .strict type compatibility in <complex.h>.
  • aligned_alloc, который, вероятно, не будет реализован, так как операционная система Windows не поддерживает выделенные распределения.aligned_alloc, which will probably not be implemented because the Windows operating system doesn't support aligned allocations. Вместо этого используйте не стандартный _aligned_malloc .Use the non-standard _aligned_malloc, instead.
  • strerrorlen_s
  • Атомарная поддержка в <stdatomic.h>atomic support in <stdatomic.h>
  • Поддержка потоков в <threads.h>threading support in <threads.h>

UCRT также реализует большое подмножество библиотеки POSIX. 1 (ISO/IEC 9945-1:1996, интерфейс прикладного программного интерфейса POSIX) C.The UCRT also implements a large subset of the POSIX.1 (ISO/IEC 9945-1:1996, the POSIX System Application Program Interface) C library. Однако он не полностью соответствует ни одному конкретному стандарту POSIX.However, it's not fully conformant to any specific POSIX standard. UCRT также реализует несколько функций и макросов, относящихся к Microsoft, не входящих в стандарт.The UCRT also implements several Microsoft-specific functions and macros that aren't part of a standard.

Функции, относящиеся к реализации Майкрософт Visual C++, находятся в библиотеке vcruntime.Functions specific to the Microsoft implementation of Visual C++ are found in the vcruntime library. Многие из этих функций предназначены для внутреннего использования и не могут быть вызваны пользовательским кодом.Many of these functions are for internal use and can't be called by user code. Некоторые предназначены для использования при отладке и проверке совместимости реализаций.Some are documented for use in debugging and implementation compatibility.

Стандартная библиотека C++ резервирует имена, которые начинаются с символа подчеркивания в глобальном пространстве имен, в реализации.The C++ standard reserves names that begin with an underscore in the global namespace to the implementation. Функции POSIX и библиотека времени выполнения Microsoft относятся к глобальному пространству имен, но не являются частью стандартной библиотеки времени выполнения C.Both the POSIX functions and Microsoft-specific runtime library functions are in the global namespace, but aren't part of the standard C runtime library. Вот почему предпочтительные реализации этих функций Майкрософт имеют подчеркивание в начале.That's why the preferred Microsoft implementations of these functions have a leading underscore. Для переносимости библиотека UCRT также поддерживает имена по умолчанию, но компилятор Microsoft C++ выдает предупреждение об устаревании при компиляции кода, который использует их.For portability, the UCRT also supports the default names, but the Microsoft C++ compiler issues a deprecation warning when code that uses them is compiled. Только имена по умолчанию являются устаревшими, а не сами функции.Only the default names are deprecated, not the functions themselves. Чтобы подавить предупреждение, задайте _CRT_NONSTDC_NO_WARNINGS перед включением каких-либо заголовков в код, использующий исходные имена POSIX.To suppress the warning, define _CRT_NONSTDC_NO_WARNINGS before including any headers in code that uses the original POSIX names.

Про некоторые функции в стандартной библиотеке C известно, что имеется тенденция к их небезопасному использованию из-за неправильно используемых параметров и непроверенных буферов.Certain functions in the standard C library have a history of unsafe usage, because of misused parameters and unchecked buffers. Эти функции часто являются источником проблем с безопасностью в коде.These functions are often the source of security issues in code. Корпорация Майкрософт создала набор более безопасных версий этих функций, которые проверяют использование параметров.Microsoft created a set of safer versions of these functions that verify parameter usage. Они вызывают обработчик недопустимых параметров при обнаружении проблемы во время выполнения.They invoke the invalid parameter handler when an issue is detected at runtime. По умолчанию компилятор Microsoft C++ выдает предупреждение об устаревании, когда используется функция, для которой имеется более безопасный вариант.By default, the Microsoft C++ compiler issues a deprecation warning when a function is used that has a safer variant available. При компиляции кода как C++ можно определить _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES как 1, чтобы устранить большинство предупреждений.When you compile your code as C++, you can define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES as 1 to eliminate most warnings. Этот макрос включает перегрузки шаблонов для вызова более безопасных вариантов при сохранении переносимого исходного кода.This macro enables template overloads to call the safer variants while maintaining portable source code. Чтобы подавить предупреждение, определите _CRT_SECURE_NO_WARNINGS перед тем, как включить какие-либо заголовки в код, который использует эти функции.To suppress the warning, define _CRT_SECURE_NO_WARNINGS before including any headers in code that uses these functions. Дополнительные сведения см. в разделе Функции безопасности в CRT.For more information, see Security Features in the CRT.

За исключением указанного в документации по конкретным функциям библиотека UCRT совместима с Windows API.Except as noted within the documentation for specific functions, the UCRT is compatible with the Windows API. Некоторые функции не поддерживаются в приложениях Магазина Windows или универсальная платформа Windows (UWP).Certain functions aren't supported in Windows Store or Universal Windows Platform (UWP) apps. Эти функции перечислены в функциях CRT, которые не поддерживаются в универсальная платформа Windows приложениях.These functions are listed in CRT functions not supported in Universal Windows Platform apps.

ЗаголовокTitle ОписаниеDescription
Приложения UWP, среда выполнения Windows и среда выполнения CUWP Apps, the Windows Runtime, and the C runtime Описывает, когда подпрограммы UCRT несовместимы с универсальными приложениями Windows или приложениями Microsoft Store.Describes when UCRT routines aren't compatible with Universal Windows apps or Microsoft Store apps.
Соответствие стандарту ANSI CANSI C Compliance Описывает именования, соответствующие стандартам, в UCRT.Describes standard-compliant naming in the UCRT.
UNIXUNIX Рекомендации по переносу программ в UNIX.Provides guidelines for porting programs to UNIX.
Платформы Windows (CRT)Windows Platforms (CRT) Перечисление операционных систем, поддерживающих CRT.Lists the operating systems that are the CRT supports.
Обратная совместимостьBackward Compatibility Описание сопоставлений старых имен CRT с новыми.Describes how to map old CRT names to the new ones.
Возможности библиотеки CRTCRT Library Features Общие сведения о файлах библиотеки CRT (LIB) и соответствующих параметрах компилятора.Provides an overview of the CRT library (.lib) files and the associated compiler options.