Compatibilidad

La biblioteca en tiempo de ejecución de C universal (UCRT) admite la mayor parte de la biblioteca estándar de C necesaria para la conformidad con C++. Implementa la biblioteca C99 (ISO/IEC 9899:1999), con ciertas excepciones:

  • compatibilidad de tipos estricta en < complex.h > .
  • aligned_alloc, que probablemente no se implementará porque el Windows operativo no admite asignaciones alineadas. En su lugar, use el no _aligned_malloc estándar .
  • strerrorlen_s
  • atomic support in < stdatomic.h>
  • compatibilidad con subprocesos < en threads.h>

El UCRT también implementa un subconjunto grande de la biblioteca C POSIX.1 (ISO/IEC 9945-1:1996, interfaz del programa de aplicaciones del sistema POSIX). Sin embargo, no es totalmente compatible con ningún estándar POSIX específico. El UCRT también implementa varias funciones y macros específicas de Microsoft que no forman parte de un estándar.

Las funciones concretas de la implementación de Microsoft de Visual C++ se encuentran en la biblioteca vcruntime. Muchas de estas funciones son para uso interno y el código de usuario no puede llamar a ellas. Algunas están documentadas para su uso en la depuración y la compatibilidad de implementación.

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. Las funciones POSIX y las funciones de 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 en tiempo de ejecución de C estándar. Por eso las implementaciones preferidas de Microsoft de estas funciones tienen un carácter de subrayado inicial. 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. Solo los nombres predeterminados están en desuso, no las propias funciones. Para suprimir la advertencia, defina _CRT_NONSTDC_NO_WARNINGS antes de incluir encabezados en el código que utiliza los nombres POSIX originales.

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. Estas funciones son a menudo el origen de los problemas de seguridad en el código. Microsoft creó un conjunto de versiones más seguras de estas funciones que comprueban el uso de parámetros. Invocan el controlador de parámetros no válidos cuando se detecta un problema en tiempo de ejecución. 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. 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. Esta macro permite que las sobrecargas de plantilla llamen a las variantes más seguras mientras se mantiene el código fuente portátil. Para suprimir la advertencia, defina _CRT_SECURE_NO_WARNINGS antes de incluir encabezados en el código que utiliza estas funciones. Para obtener más información, consulta 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. Ciertas funciones no se admiten en Windows Store o plataforma Windows universal(UWP). Estas funciones se enumeran en funciones de CRT que no se admiten en las aplicaciones Windows plataforma universal.

Title Descripción
Aplicaciones para UWP, Windows runtime y tiempo de ejecución de C Describe cuándo las rutinas ucrt no son compatibles con las aplicaciones Windows universales o Microsoft Store aplicaciones.
Conformidad con ANSI C Describe los nombres conformes al estándar en el UCRT.
UNIX Proporciona directrices para trasladar programas a UNIX.
Windows platforms (CRT) Enumera los sistemas operativos que admite CRT.
Compatibilidad con versiones anteriores Describe cómo asignar nombres de CRT antiguos a los nombres nuevos.
Archivos de tiempo de ejecución de C (CRT) y biblioteca estándar de C++ (STL) Proporciona información general sobre los archivos de biblioteca (.lib) de CRT y las opciones del compilador asociadas.