Fortran:指向父模块中子例程的指针过程

时间:2012-11-06 20:32:50

标签: pointers 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对此示例进行了正面测试。 我想知道,这个代码是标准允许的还是运行正常,因为它是一个编译器依赖功能? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这种方法很好(使用F2003功能),但是为likefoo做了抽象的接口。对模块依赖的有向图的要求是对这些模块中的过程的调用嵌套的正交概念。