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을 사용하여 테스트되었습니다. 이 코드는 표준에 의해 허용되거나 컴파일러 종속성 기능이므로 ok로 실행됩니다. 도움 주셔서 감사합니다.
감사합니다. 두 개념에 대해 더 자세히 설명해 주시겠습니까? – alexis
다시 말해서 자식 모듈의 "in"프로 시저를 실제로 실행하지 않는다는 의미입니다. 주 프로그램의 범위에'child' 모듈과'father' 모듈을 모두 가지고 있기 때문에,'foo'를 포함하여 인터페이스에 맞는 접근 가능한 프로 시저에 프로 시저 포인터를 할당 할 수 있습니다. 자식 모듈에서'use parent'는 실제로 이것을 위해 필요하지 않습니다. 또한 컴파일하는 동안'to_foo'는'run'을 호출 할 때 연결되지 않아서 segfault를줍니다. 이 상태는'associated (to_foo)'로 확인할 수 있습니다. – sigma