Kompatibilita
Knihovna UCRT (Universal C Runtime Library) podporuje většinu standardní knihovny jazyka C vyžadované pro shodu jazyka C++. Implementuje knihovnu C99 (ISO/IEC 9899:1999) s určitými výjimkami:
- Striktní kompatibilita typů < v complex.h > .
aligned_alloc, která pravděpodobně nebude implementována, protože Windows operační systém nepodporuje sjednocená přidělení. Místo toho použijte nestandardní_aligned_malloc.strerrorlen_s- Podpora atomic v < stdatomic.h>
- Podpora threadingu v < threads.h>
UCRT také implementuje velkou podmnožinu knihovny POSIX.1 (ISO/IEC 9945-1:1996, rozhraní POSIX System Application Program Interface) jazyka C. Není ale plně v souladu s žádným konkrétním standardem POSIX. UCRT také implementuje několik funkcí a maker specifických pro Společnost Microsoft, která nejsou součástí standardu.
Funkce specifické pro implementaci sady Visual C++ jsou k dispozici v knihovně vcruntime. Mnohé z těchto funkcí jsou pro interní použití a nelze je volat pomocí uživatelského kódu. Některé jsou zdokumentované pro použití při ladění a kompatibilitě implementace.
Standardní jazyk C++ si vyhrazuje názvy, které začínají podtržítkem v globálním oboru názvů až po implementaci. Funkce POSIX i funkce knihovny modulu runtime specifické pro Společnost Microsoft jsou v globálním oboru názvů, ale nejsou součástí standardní knihovny modulu runtime jazyka C. Proto preferované implementace těchto funkcí od Microsoftu mají úvodní podtržítko. Kvůli přenositelnosti UCRT podporuje také výchozí názvy, ale kompilátor Microsoft C++ vydá upozornění na vyněcování, pokud je kód, který je používá, zkompilován. Pouze výchozí názvy jsou zastaralé, nikoli samotné funkce. Pokud chcete upozornění potlačit, definujte před zahrnutím hlaviček do kódu, _CRT_NONSTDC_NO_WARNINGS který používá původní názvy POSIX.
Některé funkce ve standardní knihovně jazyka C mají historii nebezpečného použití z důvodu nesprávných parametrů a nezkontrolovaných vyrovnávacích pamětí. Tyto funkce jsou často zdrojem problémů se zabezpečením v kódu. Společnost Microsoft vytvořila sadu bezpečnějších verzí těchto funkcí, které ověřují použití parametrů. Při zjištění problému za běhu vyvolá obslužnou rutinu neplatného parametru. Ve výchozím nastavení kompilátor Jazyka C++ společnosti Microsoft vydá upozornění na vyněcování, pokud se používá funkce, která má bezpečnější variantu. Při kompilaci kódu jako jazyka C++ můžete definovat jako _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1, abyste odstranili většinu upozornění. Toto makro umožňuje přetížení šablony volat bezpečnější varianty při zachování přenositelného zdrojového kódu. Pokud chcete upozornění potlačit, _CRT_SECURE_NO_WARNINGS definujte před zahrnutím hlaviček do kódu, který tyto funkce používá. Další informace najdete v tématu Funkce zabezpečení v CRT.
S výjimkou toho, co je v dokumentaci k určitým funkcím uvedenou, je UCRT kompatibilní s rozhraním WINDOWS API. Některé funkce nejsou podporované v aplikacích Windows Store ani Univerzální Windowsplatformě (UPW). Tyto funkce jsou uvedené ve funkcích CRT, které nejsou podporované v aplikacích univerzální Windows Platform.
Související články
| Nadpis | Popis |
|---|---|
| Aplikace pro UPW, Windows Runtime a modul runtime jazyka C | Popisuje, kdy rutiny UCRT nejsou kompatibilní s univerzálními Windows nebo Microsoft Store aplikacemi. |
| Ansi C – shoda | Popisuje standardní názvy v UCRT. |
| UNIX | Poskytuje pokyny pro přenos programů do systém UNIX. |
| Windows platformy (CRT) | Uvádí operační systémy, které CRT podporuje. |
| Zpětná kompatibilita | Popisuje, jak mapovat staré názvy CRT na nové. |
| Soubory knihovny C runtime (CRT) a C++ Standard Library (STL) | Poskytuje přehled souborů knihovny CRT (.lib) a přidružených možností kompilátoru. |