接上文: C语言标准库所包含的函数功能介绍(1) C语言标准库所包含的函数功能介绍(2) 10、<errno.h><errno.h> 文件里定义了 errno,是一个int型的值。 errno 可以看作一个变量,其初始值为 0,任何标准库函数执行中出错都可能将它设置为非 0 值,但任何标准库函数的执行都不会出现将它设置为 0 的动作。 在<errno.h>里还定义了两个宏 EDOM 和 ERANGE,它们都是非 0 整数值。如果数学函数执行中遇到参数错误(参数超出了函数的允许范围),就会将 errno 设置为 EDOM。如果数学函数计算中出现值域错误(结果溢出),就会将 errno 设置为 ERANGE。 此外,标准库还允许具体系统定义一些以 E 开头的宏,用于表示具体 C 系统的标准库可能给 errno 设置的值。 11、<setjmp.h>setjmp.h 文件定义了宏 setjmp()、函数 longjmp() 和变量类型 jmp_buf,该变量类型会绕过正常的函数调用和返回规则。 jmp_buf:用于存储宏 setjmp() 和函数 longjmp() 相关信息的数组类型。 int setjmp(jmp_buf environment):这个宏把当前环境保存在变量 environment 中,以便函数 longjmp() 后续使用。如果这个宏直接从宏调用中返回,则它会返回零,但是如果它从 longjmp() 函数调用中返回,则它会返回一个非零值。 void longjmp(jmp_buf environment, int value):该函数恢复最近一次调用 setjmp() 宏时保存的环境,jmp_buf 参数的设置是由之前调用 setjmp() 生成的。
12、<signal.h>signal.h 文件定义了一个变量类型 sig_atomic_t、两个函数调用和一些宏来处理程序执行期间报告的不同信号。 下面是头文件 signal.h 中定义的宏: SIG_DFL:默认的信号处理程序; SIG_ERR:表示一个信号错误; SIG_IGN:忽视信号。 signal.h 中定义的函数:
定义的函数: void (*signal(int sig, void (*func)(int)))(int):该函数设置一个函数来处理信号,即信号处理程序。 int raise(int sig):该函数会促使生成信号 sig。sig 参数与 SIG 宏兼容。
13、<assert.h>assert.h 文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。 assert 宏的定义如下: assert.h 中定义的唯一的函数: 14、<locale.h>locale.h 文件定义了特定地域的设置,比如日期格式和货币符号。 15、<stdarg.h>stdarg.h 文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。 可变参数的函数通在参数列表的末尾是使用省略号(,...)定义的。
定义的变量类型: 定义的宏: void va_start(va_list ap, last_arg):这个宏初始化 ap 变量,它与 va_arg 和 va_end 宏是一起使用的。last_arg 是最后一个传递给函数的已知的固定参数,即省略号之前的参数。 type va_arg(va_list ap, type):这个宏检索函数参数列表中类型为 type 的下一个参数。 void va_end(va_list ap):这个宏允许使用了 va_start 宏的带有可变参数的函数返回。如果在从函数返回之前没有调用 va_end,则结果为未定义。
|