Visual C++ 2005 での CRT 機能
更新 : 2007 年 11 月
ここでは、Visual C++ 2005 の新しい CRT 機能の一覧を示します。
CRT
互換性に影響する変更点
互換性に影響する変更点 (CRT) を参照してください。
新機能
一部の関数にCRT 関数のセキュリティが強化されたバージョンが追加されました。これらの関数では、エラー処理が改善され、バッファをさらに厳密に制御でき、セキュリティの一般的な欠陥を回避できます。セキュリティが強化された新しいバージョンには _s サフィックスが付いています。
多くの関数のセキュリティが強化されていない既存のバージョンは使用されなくなりました。使用されなくなったことを知らせる警告を無効にするには、_CRT_SECURE_NO_WARNINGS を定義します。詳細については、「CRT 関数のセキュリティが強化されたバージョン」を参照してください。
既存の多くの関数は、無効のパラメータを受け取ると、パラメータを検証して無効のパラメータ ハンドラを呼び出します。詳細については、個々の関数リファレンスおよび「パラメータの検証」を参照してください。
既存の多くの関数は、以前は設定しなかった errno を設定します。個々の errno の情報については、それぞれの関数リファレンスを参照してください。
整数型の typedef errno_t が追加されました。errno_t は、関数の戻り値の型またはパラメータが errno のエラー コードを処理する場合に使用されます。errcode は、errno_t で置き換えられます。
ロケールに依存する関数には、現在のロケールを使用する代わりにパラメータとしてロケールを受け取るバージョンが追加されました。この新しい関数には、_l というサフィックスが付いています。ロケール オブジェクトで使用するための新しい関数がいくつか追加されました。新しい関数には、_get_current_locale、_create_locale、および _free_locale の各関数が含まれます。詳細については、個々の関数リファレンスを参照してください。
ファイル ハンドルのロックとアンロックをサポートするための新しい関数が追加されました。詳細については、「_lock_file」および「_unlock_file」を参照してください。
_spawn 関数ファミリは、以前のバージョンとは異なり、正常に終了した場合に errno をゼロにリセットしません。詳細については、「_spawn 系関数と _wspawn 系関数」を参照してください。
printf 関数ファミリの複数のバージョンを使用できるので、引数を使用する順序を指定できます。printf_p の位置指定パラメータ、_cprintf_p、_cprintf_p_l、_cwprintf_p、_cwprintf_p_l、_printf_p、_printf_p_l、_wprintf_p、_wprintf_p_l、_sprintf_p、_sprintf_p_l、_swprintf_p、_swprintf_p_l、_fprintf_p、_fprintf_p_l、_fwprintf_p、_fwprintf_p_l、_vprintf_p、_vprintf_p_l、_vwprintf_p、_vwprintf_p_l、_vsprintf_p、_vsprintf_p_l、_vswprintf_p、_vswprintf_p_l、および _vfprintf_p、_vfprintf_p_l、_vfwprintf_p、_vfwprintf_p_l を参照してください。
テキスト形式としてユニコードがサポートされました。_open 関数は _O_TEXTW、_O_UTF8、および _O_UTF16 の各属性をサポートします。fopen 関数は、Unicode 形式を指定する "ccs=ENCODING" メソッドをサポートします。詳細については、_open、_wopen、fopen、_wfopen、および fopen_s、_wfopen_s を参照してください。
マネージ コード (MSIL) でビルドされた CRT ライブラリの新しいバージョンが使用可能になり、/clr (共通言語ランタイムのコンパイル) オプションでコンパイルする際に使用できます。詳細については、「C ランタイム ライブラリ」を参照してください。
_fileinfo が削除されました。
time_t の既定のサイズが 64 ビットになりました。これによって、time_t および一部の時間関数の範囲が 3000 年まで拡張されます。「時間管理」および個々の時間関数を参照してください。
CRT は、スレッド ベースでロケールを設定できるようになりました。この機能をサポートするために、_configthreadlocale 関数が追加されました。
x87 と SSE2 の両方の浮動小数点プロセッサで浮動小数点制御ワードへのアクセスと制御をサポートするために、_statusfp2 関数と __control87_2 関数が追加されました。
時間 (struct tm) をグリニッジ標準時 (GMT) に変換するために、_mkgmtime and _mkgmtime64 の関数が追加されました。
標準への準拠を強化するために、swprintf と vswprintf が変更されました。詳細については、「sprintf、_sprintf_l、swprintf、_swprintf_l、__swprintf_l」を参照してください。
新しいヘッダー ファイル (INTRIN.H) は、一部の組み込み関数のためのプロトタイプを提供します。
fopen 関数に N 属性が追加されました。
_open 関数に _O_NOINHERIT 属性が追加されました。
atoi 関数は、オーバーフロー時に INT_MAX を返し、errno を ERANGE に設定するようになりました。以前のバージョンでは、オーバーフロー時の動作が未定義でした。
printf 関数ファミリは、%a 指定子と %A 指定子を使用して、ANSI C99 標準に準拠して実装される 16 進浮動小数点出力をサポートします。詳細については、「printf 関数の型フィールド文字」を参照してください。
printf ファミリは、"ll" (long long) サイズ プリフィックスをサポートするようになりました。詳細については、「サイズと距離の指定」を参照してください。
_controlfp 関数は、パフォーマンスが向上するように最適化されました。
一部の関数にデバッグ バージョンが追加されました。詳細については、_strdup_dbg、_wcsdup_dbg、_tempnam_dbg、_wtempnam_dbg、_getcwd_dbg、_wgetcwd_dbg、_getdcwd_dbg、_wgetdcwd_dbg、および _fullpath_dbg、_wfullpath_dbg を参照してください。
_chgsignl と _cpysignl (long double バージョン) が追加されました。
型テーブルに _locale_t 型が追加されました。
配列の要素の数を算出するために、_countof マクロ という新しいマクロが追加されました。
それぞれの関数のトピックに、.NET Framework に対応するセクションが追加されました。
一部の文字列関数では、出力バッファが小さすぎる場合に失敗する代わりに文字列を切り詰めるオプションが追加されました。「_TRUNCATE」を参照してください。
_set_se_translator は、/EHa コンパイラ オプションを使用する必要があります。
/Za の場合 (C コード)、または __STDC__ が手動で設定された場合 (C++ コード)、fpos_t は __int64 になります。以前は構造体でした。
_CRT_DISABLE_PERFCRIT_LOCKS は、シングル スレッド プログラムの I/O パフォーマンスを向上できます。
POSIX の名前は、ISO C++ に準拠した名前に置き換えるために使用されなくなりました (たとえば、getch の代わりに _getch を使用します)。
pure モードで新しいリンク オプションの .obj ファイルが使用できます。詳細については、「リンク オプション」を参照してください。