名前空間
変種
操作

エラーハンドリング

From cppreference.com
< c

目次

[編集] エラー番号

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

[編集] アサーション

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

境界検査

標準ライブラリは、いくつかの既存の関数の境界検査付きバージョンを提供している (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)
errno の値を返す関数を自己文書化するために使用される、型 int の typedef
(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> で定義
境界検査付き関数のエラーコールバックを設定する
(関数) [編集]
境界検査付き関数のabortコールバック
(関数) [編集]
境界検査付き関数のignoreコールバック
(関数) [編集]

注意: 境界検査付き関数の実装は、オープンソースライブラリの Safe CSlibc、そして Watcom C の一部として利用可能である。また、Visual Studio では互換性のない境界検査付き関数のセットが利用可能である。

(C11 以降)

[編集] ノート

C23以降、static_assert はそれ自体がキーワードとなり、また事前定義マクロにもなり得るため、<assert.h> はもはやそれを提供しない。

[編集] 参照

拡張コンテンツ
  • C23標準 (ISO/IEC 9899:2024)
  • 7.2 Diagnostics <assert.h> (p: TBD)
  • 7.5 Errors <errno.h> (p: TBD)
  • 7.19 Common definitions <stddef.h> (p: TBD)
  • 7.20 Integer types <stdint.h> (p: TBD)
  • 7.21 Input/output <stdio.h> (p: TBD)
  • 7.22 一般ユーティリティ <stdlib.h> (p: TBD)
  • K.3.1.3 Use of 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 Errors <errno.h> (p: TBD)
  • 7.31.10 Integer types <stdint.h> (p: TBD)
  • 7.31.11 Input/output <stdio.h> (p: TBD)
  • 7.31.12 一般ユーティリティ <stdlib.h> (p: TBD)
  • C17標準 (ISO/IEC 9899:2018)
  • 7.2 Diagnostics <assert.h> (p: TBD)
  • 7.5 Errors <errno.h> (p: TBD)
  • 7.19 Common definitions <stddef.h> (p: TBD)
  • 7.20 Integer types <stdint.h> (p: TBD)
  • 7.21 Input/output <stdio.h> (p: TBD)
  • 7.22 一般ユーティリティ <stdlib.h> (p: TBD)
  • K.3.1.3 Use of 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 Errors <errno.h> (p: TBD)
  • 7.31.10 Integer types <stdint.h> (p: TBD)
  • 7.31.11 Input/output <stdio.h> (p: TBD)
  • 7.31.12 一般ユーティリティ <stdlib.h> (p: TBD)
  • C11標準 (ISO/IEC 9899:2011)
  • 7.2 Diagnostics <assert.h> (p: 186-187)
  • 7.5 Errors <errno.h> (p: 205)
  • 7.19 Common definitions <stddef.h> (p: 288)
  • 7.20 Integer types <stdint.h> (p: 289-295)
  • 7.21 Input/output <stdio.h> (p: 296-339)
  • 7.22 一般ユーティリティ <stdlib.h> (p: 340-360)
  • K.3.1.3 Use of 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 Errors <errno.h> (p: 455)
  • 7.31.10 Integer types <stdint.h> (p: 456)
  • 7.31.11 Input/output <stdio.h> (p: 456)
  • 7.31.12 一般ユーティリティ <stdlib.h> (p: 456)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.2 Diagnostics <assert.h> (p: 169)
  • 7.5 Errors <errno.h> (p: 186)
  • 7.26.3 Errors <errno.h> (p: 401)
  • 7.26.8 Integer types <stdint.h> (p: 401)
  • 7.26.9 Input/output <stdio.h> (p: 402)
  • 7.26.10 一般ユーティリティ <stdlib.h> (p: 402)
  • C89/C90標準 (ISO/IEC 9899:1990)
  • 4.2 DIAGNOSTICS <assert.h>
  • 4.1.3 Errors <errno.h>
  • 4.13.1 Errors <errno.h>
  • 4.13.6 Input/output <stdio.h>
  • 4.13.7 一般ユーティリティ <stdlib.h>

[編集] 関連項目

一般的な数学関数で使用されるエラーハンドリングメカニズムを定義する
(マクロ定数) [編集]
エラー処理C++ドキュメント
English 日本語 中文(简体) 中文(繁體)