这个问题与问题有关:如何检测intent(in)
内部子程序的违规。但我还没有在相关问题Enforce intent(in) declared variables in Fortran as constant 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)
?