8

Fortan 允许基本子例程具有意图(输入)和意图(输出)参数,但基本函数只允许意图(输入)。

这是为什么?它只是一种风格约定,还是在调用函数和调用子例程方面存在一些一般性的不同?

换句话说,

Elemental Integer Function FOO(i)
  Integer, intent(in) :: i
    ...
  FOO=something
End Function

Elemental Subroutine FOO(i, v)
  Integer, intent(in)  :: i
  Integer, intent(out) :: v
    ...
  v=something
End Subroutine

——这些 FOO 的实现是否同样有效?

4

1 回答 1

6

有一个基本子程序没有至少一个标记为intent(out)or的参数是没有意义的intent(inout),因为您必须以某种方式传递结果。一个函数有它的返回值,一个子程序必须使用它的参数。在 Fortran 2008 中,AFAIK 基本程序不必是纯粹的,但很难想象一个有用的基本子程序仅通过其副作用。

于 2011-12-12T09:32:26.630 回答