我正在尝试在gfortran下编译一些在g77下编译好的代码.问题似乎来自一个回复声明:
ffuncs.f:934.13:
RETURN E
1
Run Code Online (Sandbox Code Playgroud)
错误:(1)处的备用RETURN语句需要SCALAR-INTEGER返回说明符
在代码中,任何E被指定为真正的*8:
IMPLICIT REAL*8(A - H,O -Z)
然而,E从未被赋予价值或事实上你直到返回陈述才会看到它.我对Fortran几乎一无所知.在fortran中带有参数的return语句是什么意思?
谢谢.
FORTRAN(直到Fortran 77,我非常熟悉),RETURN n不用于返回函数值; 相反,它会像其他语言中的异常处理一样:退出到正常代码之外的代码位置.
你通常称这样的SUBROUTINE或FUNCTION用标签作为参数,例如
CALL MYSUB(A, B, C, *998, *999)
...
998 STOP 'Error 1'
998 STOP 'Error 2'
Run Code Online (Sandbox Code Playgroud)
如果在MYSUB中出现问题,那么你做RETURN 1或者RETURN 2(而不是正常的RETURN)你将直接跳到调用例程中的998或999标签.
这就是为什么通常你想在RETURN上有一个整数 - 它不是一个值,而是一个你想要错误退出的索引.
RETURN E听起来对我不对.除非有我不知道的语法,否则以前的编译器应该将其标记为错误.
| 归档时间: |
|
| 查看次数: |
5832 次 |
| 最近记录: |