本节主要讲述头文件<cstdarg>(variable argument)、<csetjmp>(nonlocal jumps)、<ctime>(system clock clock(),time()),<csignal>(signal handling)和<cstdlib>(runt-ime environment getenv(),system())等的相关知识。
各头文件的摘要详见表10-2~表10-6。表10-2给出的宏和函数可用于访问list列表。
表10-2 头文件<cstdarg>概要
表10-3中给出的函数和宏主要用于在程序中实现跳转功能。
表10-3 头文件<csetjmp>概要
表10-4给出的宏和函数主要用于处理时间。
表10-4 头文件<ctime>概要
表10-5给出的宏和函数主要用于信号处理。
表10-5 头文件<csignal>概要(www.xing528.com)
表10-6给出的是两个环境处理函数。
表10-6 头文件<cstdlib>概要
上述头文件和标准C库的头文件<stdarg.h>、<setjmp.h>、<time.h>、<signal.h>和<stdlib.h>基本上是一致的,仅包括以下几点差异:
1)va_start、va_end和vaarg这3个函数主要用于访问列表(list)的变量参数。va_arg()函数用于返回当前的参数。va_list函数用于创建一个参数类型(type)指针(ap);va_start()用于初始化指针ap,第二个变量必须是“…”之前的变量名;va_arg(last,ap)函数第一次被调用时,会返回last之后的变长参数表中的第一个参数,并修改ap指向下一个元素,当再一次调用va_arg()时,函数会返回一个参数,可以将ap向前移动一步。va_arg除了需要ap参数指针之外,还需要数据类型type,用于决定下一步的步长应该迈多大。va_end()函数是和va_start()函数相对应的。
ISOC为宏va_start()函数设置第二个参数,该宏函数在头文件<stdarg.h>中声明。严格地说,这和C++国际标准是不同的。假定在函数定义的变量参数表中,参数parmN是最右边参数标识。如果参数parmN被声明,在传递参数过程时,如果所传递的参数类型不合适,那么导致的行为将是不确定的。
2)setjmp()和longjmp()函数分别担任局部标号和goto的功能。在C++国际标准中,函数longjmp(jmp_buf,intval)具有更受限制的行为。longjmp()函数的作用是使进程返回至setjmp()处执行,其第二个参数表示下一次调用setjmp()时的返回值。有时通过抛出异常转移控制到程序中的另一个目标点,如果任何自动类型的对象会被破坏,然后调用longjmp(jbuf,val)函数在抛出点,在该抛出点会转移控制到同一个点具有不确定的行为。
3)clock()函数在前面的章节已经有所介绍,此处仅在例题中举例说明。
4)信号处理raise()和signal()函数可以在Windows环境中是使用。raise()函数用于抛出一个信号,signal()函数是用于设置中断信号的处理函数(句柄函数)。
5)getenv()函数用于获取当前环境的值;system()函数用于执行系统命令。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。