0
我偶然發現了一種在子模塊中運行父進程的方法。我的意思是,這個技巧允許我以上游方式運行進程,與模塊的依賴關係樹有關。具體來說,這裏舉個例子:Fortran:指向父模塊中子例程的過程
module parent
procedure(likefoo),pointer :: to_foo
interface
subroutine likefoo
end subroutine likefoo
end interface
contains
subroutine run
call to_foo
end subroutine
end module
module child
use parent
contains
subroutine foo
print *, 'hola'
end subroutine foo
end module
program main
use parent
use child
to_foo => foo
call run
end program
這個例子用ifort 13.0.0進行了正面測試。 我想知道,這個代碼是標準允許的,或者只是它運行正常,因爲它是一個編譯器依賴特性? 感謝您的幫助。
謝謝!你能稍微解釋一下這兩個概念嗎?再次感謝您 – alexis
這意味着您並不是真的在子模塊中運行一個程序。你只需在你的主程序的範圍內有'child'和'father'模塊,所以你可以將程序指針分配給與其接口相匹配的任何可訪問的過程,在本例中包括'foo'。子模塊中的「使用父項」實際上不是必需的。還要注意,雖然這會編譯,但當您調用'run'時,可能不會關聯'to_foo',從而導致段錯誤。你可以用'associated(to_foo)'來檢查這個狀態。 – sigma