gpt4 book ai didi

fortran - 如何强制编译器将省略的意图解释为意图(输入输出)

转载 作者:行者123 更新时间:2023-12-01 04:02:27 36 4
gpt4 key购买 nike

本题与问题相关:如何检测intent(in)的违规子程序里面。但是我在相关问题Enforce intent(in) declared variables in Fortran as constant also in called subroutines/functions中没有找到答案.

声明为 intent(in) 的变量可以被另一个子程序/函数修改,并省略意图声明。

例如:

module test
implicit none
contains

subroutine fun1(x)
real(8), intent(in)::x
call fun2(x)
end subroutine

subroutine fun2(x)
real(8) :: x
x = 10
end subroutine
end module

gfortran 和 ifort 可以编译此代码而不会出现任何错误/警告。所以我的问题是:
  • 是否可以禁止省略意图声明?
  • 是否可以强制 Fortran 编译器将省略的意图解释为 intent(inout) ?
  • 最佳答案

    两个答案都是NO。未指定意图与所有其他意图有着根本的不同。它与intent(inout) 不同,因为您可以将不可定义的表达式传递给具有未指定意图的子例程。

    同样在许多情况下,根本不允许指定意图(过程参数,Fortran 95 中的指针,...)

    如果您想要求指定意图,您可以将您的子程序定义为 pure但它的作用远不止于此。但这对你来说可能是正确的。它禁止任何副作用。

    关于fortran - 如何强制编译器将省略的意图解释为意图(输入输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727556/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com