此問題與問題連接:如何檢測子程序內部intent(in)
的違規情況。但我還沒有在相關問題Enforce intent(in) declared variables in Fortran as constant also in called subroutines/functions中找到答案。如何強制編譯器將意圖解釋爲intent(inout)
聲明爲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)
?
因此,這意味着沒有辦法確定intent(in)不會違反「純粹」子例程嗎?感謝「純粹」提示的方式。 – Sergey
不幸的是,調用過程不能查看其他過程。它甚至可以看到它的界面,例如已經聲明的意圖。 –