Sun Studio 12:Fortran 编程指南

11.8 交替返回

Fortran 77 的交替返回机制已经过时,如果考虑可移植性,不应再使用它。在 C 中没有与交替返回等同的机制,所以只需关注 C 例程调用具有交替返回的 Fortran 例程的情况。Fortran 95 接受 Fortran 77 的交替返回,但不鼓励使用它。

以下实现返回 RETURN 语句中表达式的 int 值。这依赖于具体实现,应避免使用。

表 11–17 交替返回

C 调用 Fortran 

运行示例 


int altret_ ( int * );
main ()
{
  int k, m ;
  k =0;
  m = altret_( &k ) ;
  printf( "%d %d\n", k, m);
}

------------------------------

SUBROUTINE ALTRET( I, *, *)
  INTEGER I
  I = I + 1
  IF(I .EQ. 0) RETURN 1
  IF(I .GT. 0) RETURN 2
  RETURN
END

demo% cc -c tst.c
demo% f95 -o alt alt.f tst.o
alt.f:
altret:
demo% alt
1 2

C 例程接受从 Fortran 例程返回的值 2,因为它执行了 RETURN 2 语句。