Sun Studio 12:Fortran 库参考

1.4.34.2 longjmp:返回到由 isetjmp 设置的位置

该子例程的调用方式如下所示:

call longjmp( env, ival )

env

INTEGER*4

输入 

env 是由 isetjmp 初始化并由 12 个元素组成的整型数组。在 64 位环境中,它必须声明为 INTEGER*8

ival

INTEGER*4

输出 

如果显式调用 isetjmpival = 0

如果通过 longjmp 调用 isetjmpival ≠ 0

说明

isetjmplongjmp 例程用于处理在程序的低级例程中遇到的错误和中断。它们属于 f95 内函数。

如非必要,不应使用这些例程。它们受规范约束,且不可移植。有关错误和其他详细信息,请参见 setjmp(3V) 手册页。

isetjmpenv 中保存堆栈环境。它还会保存寄存器环境。

longjmp 会恢复上次调用 isetjmp 时保存的环境,并以继续执行这种方式返回值,就好像刚执行 isetjmp 调用返回 ival 值一样。

如果未调用 longjmp,从 isetjmp 返回的整型表达式 ival 为零,如果调用了 longjmp,则返回的 ival 不为零。

示例:使用 isetjmplongjmp 的代码片断:


       INTEGER*4  env(12)
       common /jmpblk/ env
       j = isetjmp( env )
       if ( j .eq. 0 ) then
               call  sbrtnA
           else
          call error_processor
       end if
       end
       subroutine sbrtnA
       INTEGER*4  env(12)
       common /jmpblk/ env
       call longjmp( env, ival )
       return
       end

限制

请参见 setjmp(3V)。