互換性Compatibility

Universal C Run-Time Library (UCRT) は、C++ に適合するために必要な C 標準ライブラリの大部分をサポートしています。The Universal C Run-Time Library (UCRT) supports most of the C standard library required for C++ conformance. C99 (ISO/IEC 9899:1999) ライブラリを実装しています (ただし、<tgmath.h> で定義されている型がジェネリックのマクロと、<complex.h> での厳密な型の互換性は除きます)。It implements the C99 (ISO/IEC 9899:1999) library, with the exceptions of the type-generic macros defined in <tgmath.h>, and strict type compatibility in <complex.h>. また、UCRT は、POSIX.1 (ISO/IEC 9945-1:1996、POSIX システム アプリケーション プログラミング インターフェイス) の C ライブラリの大きなサブセットを実装していますが、すべての POSIX 標準に完全に適合しているわけではありません。The UCRT also implements a large subset of the POSIX.1 (ISO/IEC 9945-1:1996, the POSIX System Application Program Interface) C library, but is not fully conformant to any specific POSIX standard. さらに、UCRT はいくつかの Microsoft 固有の関数とマクロを実装していますが、これらは標準には含まれていません。In addition, the UCRT implements several Microsoft-specific functions and macros that are not part of a standard.

Visual C++ の Microsoft による実装に固有の関数は vcruntime ライブラリ内にあります。Functions specific to the Microsoft implementation of Visual C++ are found in the vcruntime library. これらの関数の多くは内部で使用されるものであり、ユーザー コードから呼び出すことはできません。Many of these functions are for internal use and cannot be called by user code. 一部の関数は、デバッグでの使用や、実装の互換性の目的でドキュメントに記載されています。Some are documented for use in debugging and implementation compatibility.

C++ 標準では、グローバル名前空間のアンダースコアで始まる名前は、実装用に予約されています。The C++ standard reserves names that begin with an underscore in the global namespace to the implementation. POSIX 関数はグローバル名前空間に含まれていますが、標準の C ランタイム ライブラリの一部ではないため、これらの関数の Microsoft 固有の実装では名前の先頭にアンダースコアが付いています。Because the POSIX functions are in the global namespace, but are not part of the standard C runtime library, the Microsoft-specific implementations of these functions have a leading underscore. 移植性の目的で、UCRT では既定の名前もサポートされていますが、それらを使用するコードがコンパイルされると、非推奨の警告が Microsoft C++ コンパイラから出されます。For portability, the UCRT also supports the default names, but the Microsoft C++ compiler issues a deprecation warning when code that uses them is compiled. 既定の POSIX 名が非推奨とされており、関数そのものは使用できます。Only the default POSIX names are deprecated, not the functions. この警告を表示しないようにするには、元の POSIX 名を使用するコードでヘッダーをインクルードする前に _CRT_NONSTDC_NO_WARNINGS を定義します。To suppress the warning, define _CRT_NONSTDC_NO_WARNINGS before including any headers in code that uses the original POSIX names.

標準 C ライブラリの関数の中には、パラメーターを誤用した場合やバッファーのチェックを行わない場合、安全に使用できないものがありました。Certain functions in the standard C library have a history of unsafe usage, because of misused parameters and unchecked buffers. これらの関数は、多くの場合、コードのセキュリティ問題の発生源になります。These functions are often the source of security issues in code. Microsoft では、これらの関数の一連の安全性を高めたバージョンを作成し、パラメーターの使い方を確認するようにしました。また、実行時に問題が検出された場合は、無効パラメーター ハンドラーが呼び出されます。Microsoft created a set of safer versions of these functions that verify parameter usage and invoke the invalid parameter handler when an issue is detected at runtime. 既定では、より安全で利用可能なバリアントが含まれる関数が使用されると、Microsoft C++ コンパイラから非推奨の警告が出されます。By default, the Microsoft C++ compiler issues a deprecation warning when a function is used that has a safer variant available. C++ コードをコンパイルする場合に _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES を 1 に定義すると、ほとんどの警告が解消されます。When you compile your code as C++ , you can define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES as 1 to eliminate most warnings. こうすると、テンプレートのオーバーロードを使用して安全性の高いバリアントが呼び出されるため、ソース コードの移植性を維持できます。This uses template overloads to call the safer variants while maintaining portable source code. この警告を表示しないようにするには、これらの関数を使用するコードでヘッダーをインクルードする前に _CRT_SECURE_NO_WARNINGS を定義します。To suppress the warning, define _CRT_SECURE_NO_WARNINGS before including any headers in code that uses these functions. 詳細については、「 Security Features in the CRT」を参照してください。For more information, see Security Features in the CRT.

特定の関数に関するドキュメントで別途説明されている場合を除き、UCRT は Windows API と互換性があります。Except as noted within the documentation for specific functions, the UCRT is compatible with the Windows API. Windows 8 ストア アプリ、または Windows 10 上のユニバーサル Windows プラットフォーム (UWP) アプリでは、特定の関数がサポートされません。Certain functions are not supported in Windows 8 Store apps or in Universal Windows Platform (UWP) apps on Windows 10. これらの関数は、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」の一覧に含まれています。この一覧には、Windows ランタイムと UWP でサポートされない関数が列挙されています。These functions are listed in CRT functions not supported in Universal Windows Platform apps, which enumerates the functions not supported by the Windows Runtime and UWP.

TitleTitle 説明Description
UWP アプリ、Windows ランタイム、および C ランタイムUWP Apps, the Windows Runtime, and the C Run-Time UCRT ルーチンがユニバーサル Windows アプリまたは Microsoft ストア アプリと互換性がないケースについて説明します。Describes when UCRT routines are not compatible with Universal Windows apps or Microsoft Store apps.
ANSI C 準拠ANSI C Compliance UCRT における標準に適合した名前付けについて説明します。Describes standard-compliant naming in the UCRT.
UNIXUNIX プログラムを UNIX に移植するためのガイドラインを提供します。Provides guidelines for porting programs to UNIX.
Windows プラットフォーム (CRT)Windows Platforms (CRT) CRT がサポートするオペレーティング システムの一覧を示します。Lists the operating systems that are the CRT supports.
下位互換性Backward Compatibility CRT の古い名前が新しい名前にマップされる方法について説明します。Describes how to map old CRT names to the new ones.
CRT ライブラリの機能CRT Library Features CRT ライブラリ (.lib) ファイルと、関連するコンパイラ オプションの概要を示します。Provides an overview of the CRT library (.lib) files and the associated compiler options.