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_malloc
elementu .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. 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.
Powiązane artykuły
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 systemu 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. |