CompatibilidadCompatibility

La biblioteca en tiempo de ejecución universal C (UCRT) admite la mayor parte de la biblioteca estándar de C requerida para la conformidad con C++.The Universal C Runtime Library (UCRT) supports most of the C standard library required for C++ conformance. Implementa la biblioteca C99 (ISO/IEC 9899:1999), con ciertas excepciones:It implements the C99 (ISO/IEC 9899:1999) library, with certain exceptions:

  • compatibilidad de tipos estricta en <complex.h> .strict type compatibility in <complex.h>.
  • aligned_alloc, que probablemente no se implementará porque el sistema operativo Windows no admite asignaciones alineadas.aligned_alloc, which will probably not be implemented because the Windows operating system doesn't support aligned allocations. _aligned_mallocEn su lugar, use la no estándar.Use the non-standard _aligned_malloc, instead.
  • strerrorlen_s
  • compatibilidad atómica en <stdatomic.h>atomic support in <stdatomic.h>
  • compatibilidad de subprocesos en <threads.h>threading support in <threads.h>

El UCRT también implementa un gran subconjunto de la biblioteca C de POSIX. 1 (ISO/IEC 9945-1:1996, la interfaz de programación de aplicaciones del sistema POSIX).The UCRT also implements a large subset of the POSIX.1 (ISO/IEC 9945-1:1996, the POSIX System Application Program Interface) C library. Sin embargo, no es totalmente compatible con ningún estándar POSIX específico.However, it's not fully conformant to any specific POSIX standard. UCRT también implementa varias macros y funciones específicas de Microsoft que no forman parte de un estándar.The UCRT also implements several Microsoft-specific functions and macros that aren't part of a standard.

Las funciones concretas de la implementación de Microsoft de Visual C++ se encuentran en la biblioteca vcruntime.Functions specific to the Microsoft implementation of Visual C++ are found in the vcruntime library. Muchas de estas funciones son para uso interno y el código de usuario no puede llamarlas.Many of these functions are for internal use and can't be called by user code. Algunas están documentadas para su uso en la depuración y la compatibilidad de implementación.Some are documented for use in debugging and implementation compatibility.

El estándar de C++ reserva los nombres que comienzan con un carácter de subrayado en el espacio de nombres global para la implementación.The C++ standard reserves names that begin with an underscore in the global namespace to the implementation. Las funciones POSIX y las funciones de la biblioteca en tiempo de ejecución específicas de Microsoft están en el espacio de nombres global, pero no forman parte de la biblioteca estándar en tiempo de ejecución de 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. Este es el motivo por el que las implementaciones preferidas de Microsoft de estas funciones tienen un carácter de subrayado inicial.That's why the preferred Microsoft implementations of these functions have a leading underscore. Para la portabilidad, la UCRT también admite los nombres predeterminados, pero el compilador de Microsoft C++ emite una advertencia de desuso cuando se compila código que los usa.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. Solo los nombres predeterminados están en desuso, no las propias funciones.Only the default names are deprecated, not the functions themselves. Para suprimir la advertencia, defina _CRT_NONSTDC_NO_WARNINGS antes de incluir encabezados en el código que utiliza los nombres POSIX originales.To suppress the warning, define _CRT_NONSTDC_NO_WARNINGS before including any headers in code that uses the original POSIX names.

Algunas funciones de la biblioteca de C estándar tienen un historial de uso no seguro, debido a mal uso de parámetros y búferes sin comprobar.Certain functions in the standard C library have a history of unsafe usage, because of misused parameters and unchecked buffers. Estas funciones son a menudo el origen de los problemas de seguridad en el código.These functions are often the source of security issues in code. Microsoft creó un conjunto de versiones más seguras de estas funciones que comprueban el uso de los parámetros.Microsoft created a set of safer versions of these functions that verify parameter usage. Invocan el controlador de parámetros no válidos cuando se detecta un problema en tiempo de ejecución.They invoke the invalid parameter handler when an issue is detected at runtime. De forma predeterminada, el compilador de Microsoft C++ emite una advertencia de desuso cuando se utiliza una función que tiene una variante más segura disponible.By default, the Microsoft C++ compiler issues a deprecation warning when a function is used that has a safer variant available. Al compilar el código como C++, puede definir _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES como 1 para eliminar la mayoría de las advertencias.When you compile your code as C++, you can define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES as 1 to eliminate most warnings. Esta macro permite que las sobrecargas de plantilla llamen a las variantes más seguras a la vez que mantienen el código fuente portátil.This macro enables template overloads to call the safer variants while maintaining portable source code. Para suprimir la advertencia, defina _CRT_SECURE_NO_WARNINGS antes de incluir encabezados en el código que utiliza estas funciones.To suppress the warning, define _CRT_SECURE_NO_WARNINGS before including any headers in code that uses these functions. Para obtener más información, consulta Security Features in the CRT.For more information, see Security Features in the CRT.

A menos que se indique lo contrario en la documentación de funciones concretas, la UCRT es compatible con la API de Windows.Except as noted within the documentation for specific functions, the UCRT is compatible with the Windows API. Ciertas funciones no se admiten en aplicaciones de la tienda Windows o Plataforma universal de Windows (UWP).Certain functions aren't supported in Windows Store or Universal Windows Platform (UWP) apps. Estas funciones se muestran en funciones de CRT no admitidas en plataforma universal de Windows aplicaciones.These functions are listed in CRT functions not supported in Universal Windows Platform apps.

TitleTitle DescripciónDescription
Aplicaciones para UWP, el Windows Runtime y el tiempo de ejecución de CUWP Apps, the Windows Runtime, and the C runtime Describe cuándo las rutinas de UCRT no son compatibles con aplicaciones universales de Windows o aplicaciones Microsoft Store.Describes when UCRT routines aren't compatible with Universal Windows apps or Microsoft Store apps.
Compatibilidad con ANSI CANSI C Compliance Describe la nomenclatura conforme a los estándares en la UCRT.Describes standard-compliant naming in the UCRT.
UNIXUNIX Proporciona directrices para trasladar programas a UNIX.Provides guidelines for porting programs to UNIX.
Plataformas Windows (CRT)Windows Platforms (CRT) Enumera los sistemas operativos que admite CRT.Lists the operating systems that are the CRT supports.
Compatibilidad con versiones anterioresBackward Compatibility Describe cómo asignar nombres de CRT antiguos a los nombres nuevos.Describes how to map old CRT names to the new ones.
Características de la biblioteca CRTCRT Library Features Proporciona información general sobre los archivos de biblioteca (.lib) de CRT y las opciones del compilador asociadas.Provides an overview of the CRT library (.lib) files and the associated compiler options.