非常教程

C参考手册

错误处理 | Error handling

Error handling

错误编号

| Defined in header <errno.h> |

|:----|

| errno | 宏扩展到POSIX兼容的线程局部错误号变量(宏变量)|

| E2BIG,EACCES,...,EXDEV | 用于标准POSIX兼容错误条件(宏常量)|的宏

Assertions

| Defined in header <assert.h> |

|:----|

| assert | 如果用户指定的条件不正确,则中止程序。对于发布版本(函数宏)|可能会被禁用

| static_assert(C11)| 如果常量表达式的值为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> rsize_t C11)与size_t类型相同的typedef,用于在运行时对自己的参数进行范围检查的函数(typedef)在头文件<stdint.h>中定义RSIZE_MAX(C11)边界检查函数的最大可接受大小,

在头文件<errno.h>中定义

在头文件<stdio.h>中定义

errno_t(C11)

用于int类型的typedef,用于自我文档返回errno值的函数(typedef)

在头文件<stddef.h>中定义

rsize_t(C11)

一个与size_t类型相同的typedef,用于在运行时对自己的参数进行范围检查的自我文档函数(typedef)

在头文件<stdint.h>中定义

RSIZE_MAX(C11)

边界检查函数的最大可接受大小,扩展为可能在运行时改变的常量或变量(例如,当前分配的内存大小发生变化)(宏变量)

在头文件<stdlib.h>中定义

set_constraint_handler_s(C11)

为边界检查函数(函数)设置错误回调

abort_handler_s(C11)

取消对边界检查函数的回调(函数)

ignore_handler_s(C11)

忽略边界检查函数的回调(函数)

(自C11以来)

| Defined in header <errno.h> |

| Defined in header <stdio.h> |

| errno_t(C11)| 用于int类型的typedef,用于自我文档返回errno值的函数(typedef)|

| Defined in header <stddef.h> |

| rsize_t(C11)| 与size_t类型相同的typedef,用于在运行时对自己的参数进行范围检查的自我文档函数(typedef)|

| Defined in header <stdint.h> |

| RSIZE_MAX(C11)| 最大可接受的边界检查函数的大小,扩展为可能在运行时改变的常量或变量(例如,当前分配的内存大小发生变化)(宏变量)|

| Defined in header <stdlib.h> |

| set_constraint_handler_s(C11)| 为边界检查函数(函数)|设置错误回调

| abort_handler_s(C11)| 取消对边界检查函数(函数)|的回调

| ignore_handler_s(C11)| 忽略边界检查函数(函数)|的回调

参考

  • 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>

另请参阅

math_errhandlingMATH_ERRNOMATH_ERREXCEPT(C99)(C99)(C99)

定义了常用数学函数(宏常量)使用的错误处理机制,

| C++ documentation for Error handling |

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。