名稱空間
變體
操作

錯誤處理

來自 cppreference.com
< c

目錄

[編輯] 錯誤碼

定義於標頭檔案 <errno.h>
擴充套件為 POSIX 相容的執行緒區域性錯誤碼變數的宏
(宏變數) [編輯]
標準 POSIX 相容錯誤條件的宏
(宏常量) [編輯]

[編輯] 斷言

定義於標頭檔案 <assert.h>
如果使用者指定的條件不為 true,則中止程式。可以在釋出版本中停用。
(函式宏) [編輯]
(C11)(在 C23 中移除)
如果常量表達式的值為 false,則發出編譯時診斷。
(關鍵字宏)

邊界檢查

標準庫提供了一些現有函式的邊界檢查版本(gets_sfopen_sprintf_sstrcpy_swcscpy_smbstowcs_sqsort_sgetenv_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 CSlibc 中找到,並且是 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: 待定)
  • 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: 待定)
  • 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: 待定)
  • 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: 待定)
  • 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++ 文件 關於 錯誤處理