互換性

ユニバーサル C ランタイム ライブラリ (UCRT) では、C++ 準拠に必要な C 標準ライブラリのほとんどがサポートされています。 特定の例外を除き、C99 (ISO/IEC 9899:1999) ライブラリが実装されています。

  • complex.h での厳密な < 型の互換性 > 。
  • aligned_alloc。これは、オペレーティング システムのWindows割り当てがサポートされていないため、実装されない可能性があります。 代わりに、非標準 _aligned_malloc の を使用してください。
  • strerrorlen_s
  • <stdatomic.h での atomic サポート>
  • <threads.h でのスレッド処理のサポート>

UCRT では、POSIX.1 (ISO/IEC 9945-1:1996、POSIX システム アプリケーション プログラム インターフェイス) C ライブラリの大きなサブセットも実装されています。 ただし、特定の POSIX 標準に完全に準拠しているわけではありません。 UCRT では、標準の一部ではないいくつかの Microsoft 固有の関数とマクロも実装されています。

Visual C++ の Microsoft による実装に固有の関数は vcruntime ライブラリ内にあります。 これらの関数の多くは内部使用用であり、ユーザー コードでは呼び出されません。 一部の関数は、デバッグでの使用や、実装の互換性の目的でドキュメントに記載されています。

C++ 標準では、グローバル名前空間のアンダースコアで始まる名前は、実装用に予約されています。 POSIX 関数と Microsoft 固有のランタイム ライブラリ関数はどちらもグローバル名前空間にありますが、標準の C ランタイム ライブラリの一部ではありません。 これらの関数の推奨される Microsoft 実装には、先頭にアンダースコアが付くのは、その理由です。 移植性の目的で、UCRT では既定の名前もサポートされていますが、それらを使用するコードがコンパイルされると、非推奨の警告が Microsoft C++ コンパイラから出されます。 関数自体ではなく、既定の名前だけが非推奨になります。 この警告を表示しないようにするには、元の POSIX 名を使用するコードでヘッダーをインクルードする前に _CRT_NONSTDC_NO_WARNINGS を定義します。

標準 C ライブラリの関数の中には、パラメーターを誤用した場合やバッファーのチェックを行わない場合、安全に使用できないものがありました。 これらの関数は、多くの場合、コードのセキュリティ問題の発生源になります。 Microsoft では、パラメーターの使用を検証する一連の安全なバージョンのこれらの関数を作成しました。 実行時に問題が検出されると、無効なパラメーター ハンドラーが呼び出されます。 既定では、より安全で利用可能なバリアントが含まれる関数が使用されると、Microsoft C++ コンパイラから非推奨の警告が出されます。 コードを C++ としてコンパイルする場合は、ほとんどの警告を排除するために _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 として定義できます。 このマクロを使用すると、移植可能なソース コードを維持しながら、テンプレート オーバーロードでより安全なバリアントを呼び出す機能が可能になります。 この警告を表示しないようにするには、これらの関数を使用するコードでヘッダーをインクルードする前に _CRT_SECURE_NO_WARNINGS を定義します。 詳細については、「CRT のセキュリティ機能」を参照してください。

特定の関数に関するドキュメントで別途説明されている場合を除き、UCRT は Windows API と互換性があります。 一部の関数は、Windows (ユニバーサル Windows プラットフォーム ) アプリではサポートされていません。 これらの関数は、ユニバーサル Windows プラットフォーム アプリではサポートされていない CRT 関数に記載されています

Title 説明
UWP アプリ、Windows ランタイム、C ランタイム UCRT ルーチンがユニバーサル アプリやアプリと互換性がないWindowsについてMicrosoft Storeします。
ANSI C 準拠 UCRT の標準準拠の名前について説明します。
UNIX プログラムを UNIX に移植するためのガイドラインを提供します。
Windows プラットフォーム (CRT) CRT がサポートするオペレーティング システムの一覧を示します。
旧バージョンとの互換性 CRT の古い名前が新しい名前にマップされる方法について説明します。
C ランタイム (CRT) ファイルと C++ 標準ライブラリ (STL) ファイル CRT ライブラリ (.lib) ファイルと、関連するコンパイラ オプションの概要を示します。