Zgodność

Biblioteka uniwersalnego środowiska uruchomieniowego języka C (UCRT) obsługuje większość standardowej biblioteki języka C wymaganej do zachowania zgodności języka C++. Implementuje bibliotekę C99 (ISO/IEC 9899:1999) z pewnymi wyjątkami:

  • ścisła zgodność typów w <pliku complex.h>.
  • aligned_alloc, który prawdopodobnie nie zostanie zaimplementowany, ponieważ system operacyjny Windows nie obsługuje wyrównanych alokacji. Zamiast tego użyj standardowego _aligned_mallocelementu .
  • strerrorlen_s
  • niepodzielna obsługa w <stdatomic.h>
  • obsługa wątków w wątkach.h <>

UCRT implementuje również duży podzestaw biblioteki C POSIX.1 (ISO/IEC 9945-1:1996, POSIX System Application Program Interface). Jednak nie jest w pełni zgodny z żadnym konkretnym standardem POSIX. UCRT implementuje również kilka funkcji i makr specyficznych dla firmy Microsoft, które nie są częścią standardu.

Funkcje specyficzne dla implementacji języka Visual C++ firmy Microsoft znajdują się w bibliotece vcruntime. Wiele z tych funkcji jest przeznaczonych do użytku wewnętrznego i nie może być wywoływanych przez kod użytkownika. Niektóre z nich są udokumentowane do użycia w zakresie debugowania i zgodności implementacji.

Standardowe nazwy języka C++ zaczynają się od podkreślenia w globalnej przestrzeni nazw do implementacji. Zarówno funkcje POSIX, jak i funkcje biblioteki środowiska uruchomieniowego specyficzne dla firmy Microsoft znajdują się w globalnej przestrzeni nazw, ale nie są częścią standardowej biblioteki środowiska uruchomieniowego języka C. Dlatego preferowane implementacje tych funkcji firmy Microsoft mają wiodący podkreślenie. W przypadku przenośności narzędzie UCRT obsługuje również nazwy domyślne, ale kompilator języka Microsoft C++ wystawia ostrzeżenie o wycofaniu podczas kompilowania kodu, który ich używa. Tylko nazwy domyślne są przestarzałe, a nie same funkcje. Aby pominąć ostrzeżenie, zdefiniuj _CRT_NONSTDC_NO_WARNINGS przed dołączeniem nagłówków w kodzie, które używają oryginalnych nazw POSIX. Ponieważ standard C nie zezwala na standardowe nazwy w plikach nagłówków, domyślnie /std:c11/std:c17 nie uwidaczniaj domyślnych nazw funkcji, typów i makr POSIX. Jeśli te nazwy są niezbędne, zdefiniuj _CRT_DECLARE_NONSTDC_NAMES je, aby je uwidocznić.

Niektóre funkcje w standardowej bibliotece języka C mają historię niebezpiecznego użycia ze względu na nieprawidłowe parametry i niezaznaczone bufory. Te funkcje są często źródłem problemów z zabezpieczeniami w kodzie. Firma Microsoft utworzyła zestaw bezpieczniejszych wersji tych funkcji, które weryfikują użycie parametrów. Wywołują one nieprawidłową procedurę obsługi parametrów po wykryciu problemu w czasie wykonywania. Domyślnie kompilator języka Microsoft C++ wystawia ostrzeżenie o wycofaniu, gdy jest używana funkcja, która ma dostępny bezpieczniejszy wariant. Podczas kompilowania kodu jako języka C++można zdefiniować _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES jako 1, aby wyeliminować większość ostrzeżeń. To makro umożliwia przeciążeniom szablonów wywoływanie bezpieczniejszych wariantów przy zachowaniu przenośnego kodu źródłowego. Aby pominąć ostrzeżenie, zdefiniuj _CRT_SECURE_NO_WARNINGS przed dołączeniem nagłówków w kodzie, który używa tych funkcji. Aby uzyskać więcej informacji, zobacz Funkcje zabezpieczeń w CRT.

Z wyjątkiem sytuacji opisanych w dokumentacji dla określonych funkcji, funkcja UCRT jest zgodna z interfejsem API systemu Windows. Niektóre funkcje nie są obsługiwane w aplikacjach ze Sklepu Windows ani platforma uniwersalna systemu Windows (UWP). Te funkcje są wymienione w funkcjach CRT nieobsługiwanych w aplikacjach platforma uniwersalna systemu Windows.

Nazwa opis
Aplikacje platformy UWP, środowisko wykonawcze systemu Windows i środowisko uruchomieniowe języka C Opisuje, kiedy procedury UCRT nie są zgodne z uniwersalnymi aplikacjami systemu Windows ani aplikacjami ze sklepu Microsoft Store.
Zgodność ANSI C Opisuje nazwy zgodne ze standardami w narzędziu UCRT.
UNIX Zawiera wskazówki dotyczące przenoszenia programów do system UNIX.
Platformy systemu Windows (CRT) Wyświetla listę systemów operacyjnych, które obsługuje oprogramowanie CRT.
Zgodność z poprzednimi wersjami Opisuje sposób mapowania starych nazw CRT na nowe.
Pliki C runtime (CRT) i C++ Standard Library (STL) .lib Zawiera omówienie plików biblioteki CRT (.lib) i skojarzonych opcji kompilatora.