Kompatibilitás

A Universal C Runtime Library (UCRT) támogatja a C++ megfelelőséghez szükséges C szabványkódtár nagy részét. Implementálja a C99 (ISO/IEC 9899:1999) kódtárat, bizonyos kivételekkel:

  • szigorú típuskompatibilitás a complex.h-ban<>.
  • aligned_alloc, amely valószínűleg nem lesz implementálva, mert a Windows operációs rendszer nem támogatja az igazított foglalásokat. Használja inkább a nem szabványos _aligned_mallocparancsot.
  • strerrorlen_s
  • atomi támogatás a stdatomic.h-ban <>
  • szálkezelés támogatása a threads.h-ban <>

Az UCRT a POSIX.1 (ISO/IEC 9945-1:1996, a POSIX rendszeralkalmazási program interfésze) C kódtárának egy nagy részét is implementálja. Ez azonban nem felel meg teljesen egy adott POSIX szabványnak. Az UCRT emellett számos Microsoft-specifikus függvényt és makrót is implementál, amelyek nem részei a szabványnak.

A Visual C++ Microsoft-implementációjára vonatkozó függvények a vcruntime könyvtárban találhatók. Ezen függvények közül sok belső használatra szolgál, és nem hívható meg felhasználói kóddal. Néhány dokumentum a hibakeresési és implementálási kompatibilitáshoz használható.

A C++ standard az implementációhoz tartozó globális névtérben lévő aláhúzásjellel kezdődő neveket foglalja le. A POSIX-függvények és a Microsoft-specifikus futtatókörnyezeti függvények is a globális névtérben találhatók, de nem részei a standard C futtatókörnyezeti kódtárnak. Ezért van az, hogy ezeknek a függvényeknek a Microsoft által előnyben részesített implementációi vezető aláhúzással rendelkeznek. A hordozhatóság érdekében az UCRT az alapértelmezett neveket is támogatja, a Microsoft C++ fordító azonban elavultsági figyelmeztetést ad ki az őket használó kód fordításakor. Csak az alapértelmezett nevek elavultak, nem maguk a függvények. A figyelmeztetés letiltásához definiálja _CRT_NONSTDC_NO_WARNINGS , mielőtt belevenne minden fejlécet az eredeti POSIX-neveket használó kódba. Mivel a C szabvány nem engedélyezi a nem szabványos neveket a fejlécfájlokban, alapértelmezés szerint /std:c11/std:c17 nem teszi elérhetővé a POSIX-függvények, -típusok és makrók alapértelmezett nevét. Ha ezekre a nevekre szükség van, adja meg _CRT_DECLARE_NONSTDC_NAMES , hogy elérhetővé tegye őket.

A standard C-kódtár egyes függvényei nem biztonságos használattal rendelkeznek, mivel helytelen paramétereket és ellenőrizetlen puffereket használnak. Ezek a függvények gyakran biztonsági problémák forrásaként szolgálnak a kódban. A Microsoft ezen függvények biztonságosabb verzióit hozta létre, amelyek ellenőrzik a paraméterek használatát. A rendszer meghívja az érvénytelen paraméterkezelőt, ha futásidőben hiba észlelhető. Alapértelmezés szerint a Microsoft C++ fordító elavulással kapcsolatos figyelmeztetést ad ki, ha olyan függvényt használ, amely biztonságosabb változattal rendelkezik. A kód C++-ként történő fordításakor _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES értékét 1-re állíthatja be, hogy megszüntesse a legtöbb figyelmeztetést. Ez a makró lehetővé teszi a sablon túlterhelők számára a biztonságosabb változatok meghívását a hordozható forráskód fenntartása mellett. A figyelmeztetés letiltásához definiálja _CRT_SECURE_NO_WARNINGS , mielőtt belevennénk a fejléceket az ezeket a függvényeket használó kódba. További információ: Biztonsági funkciók a CRT-ben.

Az egyes függvények dokumentációjában leírtak kivételével az UCRT kompatibilis a Windows API-val. Bizonyos függvények nem támogatottak a Windows Áruházban vagy az Univerzális Windows Platform (UWP) alkalmazásokban. Ezek a függvények olyan CRT-függvényekben jelennek meg, amelyek nem támogatottak az univerzális Windows platformalkalmazásokban.

Cím Leírás
UWP-alkalmazások, a Windows-futtatókörnyezet és a C-futtatókörnyezet Azt ismerteti, hogy az UCRT-rutinok nem kompatibilisek-e az univerzális Windows-alkalmazásokkal vagy a Microsoft Store-alkalmazásokkal.
ANSI C-megfelelőség Az UCRT szabványnak megfelelő neveit ismerteti.
UNIX Útmutatást nyújt a programok UNIX-ba történő átviteléhez.
Windows-platformok (CRT) Felsorolja a CRT által támogatott operációs rendszereket.
Visszamenőleges kompatibilitás Ismerteti, hogyan társíthat régi CRT-neveket az újakra.
C futtatókörnyezeti (CRT) és C++ Standard Könyvtár (STL) .lib fájlok Áttekintést nyújt a CRT-kódtár (.lib) fájljairól és a kapcsolódó fordítóbeállításokról.