Namespaces
Variants

Error handling

From cppreference.net
< c

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Error numbers、Assertions、Bounds checking、Notes、References、See also)は原文のまま保持しました - HTMLタグ、属性、クラス名、ID、リンク先は一切変更していません - 番号部分もそのまま保持しています - フォーマットと構造は完全に維持されています

エラー番号

ヘッダーで定義 <errno.h>
POSIX互換のスレッドローカルエラー番号変数に展開されるマクロ
(マクロ変数)
標準的なPOSIX互換エラー条件のためのマクロ
(マクロ定数)

アサーション

ヘッダで定義 <assert.h>
ユーザー指定の条件が true でない場合、プログラムを異常終了させる。リリースビルドでは無効化される可能性がある
(関数マクロ)
(C11) (C23で削除)
定数式の値がfalseの場合、コンパイル時診断を発行する
(キーワードマクロ)

境界チェック

標準ライブラリは、一部の既存関数の境界チェック版を提供します( gets_s , fopen_s , printf_s , strcpy_s , wcscpy_s , mbstowcs_s , qsort_s , getenv_s など)。この機能は オプション であり、 __STDC_LIB_EXT1__ が定義されている場合にのみ利用可能です。以下のマクロと関数はこの機能をサポートします。

ヘッダーで定義 <errno.h>
ヘッダーで定義 <stdio.h>
errno_t
(C11)
int 型のtypedef。 errno 値を返す関数を自己文書化するために使用
(typedef)
ヘッダーで定義 <stddef.h>
ヘッダーで定義 <stdio.h>
ヘッダーで定義 <stdlib.h>
ヘッダーで定義 <string.h>
ヘッダーで定義 <time.h>
ヘッダーで定義 <wchar.h>
rsize_t
(C11)
size_t と同じ型のtypedef。実行時にパラメータの範囲チェックを行う関数を自己文書化するために使用
(typedef)
ヘッダーで定義 <stdint.h>
RSIZE_MAX
(C11)
境界チェック関数で許容される最大サイズ。定数または実行時に変化する可能性のある変数(例:現在割り当てられているメモリサイズの変化)に展開される
(マクロ変数)
ヘッダーで定義 <stdlib.h>
境界チェック関数のエラーコールバックを設定
(関数)
境界チェック関数のアボートコールバック
(関数)
境界チェック関数の無視コールバック
(関数)

注:境界チェック関数の実装は、オープンソースライブラリ Safe C および Slibc 、そしてWatcom Cの一部として利用可能です。また、Visual Studioでは互換性のない境界チェック関数セットも利用可能です。

(C11以降)

注記

C23以降、 static_assert はそれ自体がキーワードであり、定義済みマクロでもあるため、 <assert.h> はこれを提供しなくなりました。

参考文献

拡張コンテンツ
  • C23規格 (ISO/IEC 9899:2024):
  • 7.2 診断 <assert.h> (p: TBD)
  • 7.5 エラー <errno.h> (p: TBD)
  • 7.19 共通定義 <stddef.h> (p: TBD)
  • 7.20 整数型 <stdint.h> (p: TBD)
  • 7.21 入出力 <stdio.h> (p: TBD)
  • 7.22 一般ユーティリティ <stdlib.h> (p: TBD)
  • K.3.1.3 errnoの使用 (p: TBD)
  • K.3.2/2 errno_t (p: TBD)
  • K.3.3/2 rsize_t (p: TBD)
  • K.3.4/2 RSIZE_MAX (p: TBD)
  • 7.31.3 エラー <errno.h> (p: TBD)
  • 7.31.10 整数型 <stdint.h> (p: TBD)
  • 7.31.11 入出力 <stdio.h> (p: TBD)
  • 7.31.12 一般ユーティリティ <stdlib.h> (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.2 診断 <assert.h> (p: TBD)
  • 7.5 エラー <errno.h> (p: TBD)
  • 7.19 共通定義 <stddef.h> (p: TBD)
  • 7.20 整数型 <stdint.h> (p: TBD)
  • 7.21 入出力 <stdio.h> (p: TBD)
  • 7.22 一般ユーティリティ <stdlib.h> (p: TBD)
  • K.3.1.3 errnoの使用 (p: TBD)
  • K.3.2/2 errno_t (p: TBD)
  • K.3.3/2 rsize_t (p: TBD)
  • K.3.4/2 RSIZE_MAX (p: TBD)
  • 7.31.3 エラー <errno.h> (p: TBD)
  • 7.31.10 整数型 <stdint.h> (p: TBD)
  • 7.31.11 入出力 <stdio.h> (p: TBD)
  • 7.31.12 一般ユーティリティ <stdlib.h> (p: TBD)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.2 診断 <assert.h> (p: 186-187)
  • 7.5 エラー <errno.h> (p: 205)
  • 7.19 共通定義 <stddef.h> (p: 288)
  • 7.20 整数型 <stdint.h> (p: 289-295)
  • 7.21 入出力 <stdio.h> (p: 296-339)
  • 7.22 一般ユーティリティ <stdlib.h> (p: 340-360)
  • K.3.1.3 errnoの使用 (p: 584)
  • K.3.2/2 errno_t (p: 585)
  • K.3.3/2 rsize_t (p: 585)
  • K.3.4/2 RSIZE_MAX (p: 585)
  • 7.31.3 エラー <errno.h> (p: 455)
  • 7.31.10 整数型 <stdint.h> (p: 456)
  • 7.31.11 入出力 <stdio.h> (p: 456)
  • 7.31.12 一般ユーティリティ <stdlib.h> (p: 456)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.2 診断 <assert.h> (p: 169)
  • 7.5 エラー <errno.h> (p: 186)
  • 7.26.3 エラー <errno.h> (p: 401)
  • 7.26.8 整数型 <stdint.h> (p: 401)
  • 7.26.9 入出力 <stdio.h> (p: 402)
  • 7.26.10 一般ユーティリティ <stdlib.h> (p: 402)
  • C89/C90規格 (ISO/IEC 9899:1990):
  • 4.2 診断 <assert.h>
  • 4.1.3 エラー <errno.h>
  • 4.13.1 エラー <errno.h>
  • 4.13.6 入出力 <stdio.h>
  • 4.13.7 一般ユーティリティ <stdlib.h>

関連項目

共通の数学関数で使用されるエラー処理メカニズムを定義する
(マクロ定数)
C++ documentation for エラー処理