ZgodnośćCompatibility

Biblioteka uniwersalnego środowiska uruchomieniowego języka C (UCRT) obsługuje większość standardowej biblioteki C wymaganej do zgodności z językiem C++.The Universal C Runtime Library (UCRT) supports most of the C standard library required for C++ conformance. Implementuje bibliotekę C99 (ISO/IEC 9899:1999) z pewnymi wyjątkami:It implements the C99 (ISO/IEC 9899:1999) library, with certain exceptions:

  • zgodność typu ścisłego w programie <complex.h> .strict type compatibility in <complex.h>.
  • aligned_alloc, która prawdopodobnie nie zostanie zaimplementowana, ponieważ system operacyjny Windows nie obsługuje wyrównanych przydziałów.aligned_alloc, which will probably not be implemented because the Windows operating system doesn't support aligned allocations. _aligned_mallocZamiast tego Użyj niestandardowej.Use the non-standard _aligned_malloc, instead.
  • strerrorlen_s
  • Obsługa niepodzielna w <stdatomic.h>atomic support in <stdatomic.h>
  • Obsługa wątkowości w programie <threads.h>threading support in <threads.h>

UCRT implementuje również duży Podzestaw systemu POSIX. 1 (ISO/IEC 9945-1:1996, systemowy interfejs programu aplikacji systemu POSIX) Biblioteka 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. Nie jest to jednak w pełni zgodne z żadnym konkretnym standardem POSIX.However, it's not fully conformant to any specific POSIX standard. UCRT implementuje także kilka funkcji i makr specyficznych dla firmy Microsoft, które nie są częścią standardu.The UCRT also implements several Microsoft-specific functions and macros that aren't part of a standard.

Funkcje charakterystyczne dla implementacji Visual C++ firmy Microsoft znajdują się w bibliotece vcruntime.Functions specific to the Microsoft implementation of Visual C++ are found in the vcruntime library. Wiele z tych funkcji służy do użytku wewnętrznego i nie może zostać wywołane przez kod użytkownika.Many of these functions are for internal use and can't be called by user code. Niektóre z nich są udokumentowane pod kątem zgodności z debugowaniem i implementacją.Some are documented for use in debugging and implementation compatibility.

Standardowe C++ rezerwuje nazwy zaczynające się od znaku podkreślenia w globalnej przestrzeni nazw do implementacji.The C++ standard reserves names that begin with an underscore in the global namespace to the implementation. Zarówno funkcje POSIX, jak i biblioteki środowiska uruchomieniowego specyficzne dla firmy Microsoft znajdują się w globalnej przestrzeni nazw, ale nie są częścią standardowej biblioteki środowiska uruchomieniowego 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. Dlatego preferowane implementacje firmy Microsoft tych funkcji mają wiodący znak podkreślenia.That's why the preferred Microsoft implementations of these functions have a leading underscore. W przypadku przenośności UCRT obsługuje również nazwy domyślne, ale kompilator języka Microsoft C++ wystawia ostrzeżenie o zaniechaniu, gdy kod, który używa tych danych jest kompilowany.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. Tylko nazwy domyślne są przestarzałe, a nie same funkcje.Only the default names are deprecated, not the functions themselves. Aby pominąć ostrzeżenie, zdefiniuj _CRT_NONSTDC_NO_WARNINGS przed dołączeniem nagłówków w kodzie, które używają oryginalnych nazw POSIX.To suppress the warning, define _CRT_NONSTDC_NO_WARNINGS before including any headers in code that uses the original POSIX names.

Niektóre funkcje w standardowej bibliotece C mają historię niebezpiecznego użycia z powodu nieużywanych parametrów i niesprawdzonych buforów.Certain functions in the standard C library have a history of unsafe usage, because of misused parameters and unchecked buffers. Te funkcje są często źródłem problemów z zabezpieczeniami w kodzie.These functions are often the source of security issues in code. Firma Microsoft stworzyła zestaw bezpieczniejszych wersji tych funkcji, które weryfikują użycie parametrów.Microsoft created a set of safer versions of these functions that verify parameter usage. Wywołują procedurę obsługi nieprawidłowego parametru w przypadku wykrycia problemu w czasie wykonywania.They invoke the invalid parameter handler when an issue is detected at runtime. Domyślnie kompilator języka Microsoft C++ wystawia ostrzeżenie o zaniechaniu, gdy jest używana funkcja, która ma dostęp do bezpieczniejszej wariantu.By default, the Microsoft C++ compiler issues a deprecation warning when a function is used that has a safer variant available. Podczas kompilowania kodu w formacie C++ można zdefiniować _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES jako 1 w celu wyeliminowania większości ostrzeżeń.When you compile your code as C++, you can define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES as 1 to eliminate most warnings. To makro umożliwia przeciążenia szablonów wywoływanie bezpieczniejszych wariantów przy zachowaniu przenośnego kodu źródłowego.This macro enables template overloads to call the safer variants while maintaining portable source code. Aby pominąć ostrzeżenie, zdefiniuj _CRT_SECURE_NO_WARNINGS przed dołączeniem nagłówków w kodzie, który używa tych funkcji.To suppress the warning, define _CRT_SECURE_NO_WARNINGS before including any headers in code that uses these functions. Aby uzyskać więcej informacji, zobacz funkcje zabezpieczeń w CRT.For more information, see Security Features in the CRT.

Z wyjątkiem sytuacji, w której zaznaczono w dokumentacji dotyczącej określonych funkcji, UCRT jest zgodny z interfejsem API systemu Windows.Except as noted within the documentation for specific functions, the UCRT is compatible with the Windows API. Niektóre funkcje nie są obsługiwane w aplikacjach Windows Store i platforma uniwersalna systemu Windows (platformy UWP).Certain functions aren't supported in Windows Store or Universal Windows Platform (UWP) apps. Te funkcje są wymienione w funkcjach CRT nieobsługiwanych w aplikacjach platforma uniwersalna systemu Windows.These functions are listed in CRT functions not supported in Universal Windows Platform apps.

TytułTitle OpisDescription
Aplikacje platformy UWP, środowisko wykonawcze systemu Windows i środowisko uruchomieniowe języka CUWP Apps, the Windows Runtime, and the C runtime Opisuje, kiedy procedury UCRT są niezgodne z aplikacjami uniwersalnymi systemu Windows lub aplikacjami Microsoft Store.Describes when UCRT routines aren't compatible with Universal Windows apps or Microsoft Store apps.
Zgodność ze standardem ANSI CANSI C Compliance Opisuje zgodne ze standardami nazewnictwo w UCRT.Describes standard-compliant naming in the UCRT.
SYSTEMÓWUNIX Zawiera wytyczne dotyczące przenoszenia programów do systemu UNIX.Provides guidelines for porting programs to UNIX.
Platformy systemu Windows (CRT)Windows Platforms (CRT) Zawiera listę systemów operacyjnych obsługiwanych przez technologię CRT.Lists the operating systems that are the CRT supports.
Zgodność z poprzednimi wersjamiBackward Compatibility Opisuje sposób mapowania starych nazw CRT na nowe.Describes how to map old CRT names to the new ones.
Funkcje biblioteki CRTCRT Library Features Zawiera omówienie plików biblioteki CRT (. lib) i skojarzonych z nimi opcji kompilatora.Provides an overview of the CRT library (.lib) files and the associated compiler options.