Fortran函数缺少Doxygen的调用/调用者图引用

时间:2016-06-09 08:33:49

标签: fortran doxygen

我尝试使用Doxygen 1.8.11使用Dot(GraphViz 2.38)为固定格式的Fortran代码生成调用/调用者图。

调用/调用者图对子例程工作正常,但对于具有声明的返回值的函数失败(即没有引用)。

即。对于以下代码,MYFUNC的调用图中未显示对MYSUB的调用:

  integer function MYFUNC()
    implicit none
    MYFUNC = 1
  end function

  subroutine MYSUB ()
    implicit NONE
    integer MYFUNC
    integer RESULT
    RESULT = MYFUNC()
  return
  end

有趣的是,如果我从integer MYFUNC删除行MYSUB,则会正确绘制调用图,但代码不再有效(即,它不会编译)。

是否可以在呼叫/来电图表中包含函数调用?

1 个答案:

答案 0 :(得分:1)

据我所知,这是因为Doxygen不理解MYFUNC中的MYSUB与函数MYFUNC是一回事。 您可以通过在MYFUNC中为interface编写MYSUB块来生成MYSUB的来电图表,但这不会生成MYFUNC的调用图。

为了让Doxygen正确生成调用/调用者图,您应该将两个过程放在一个模块中(或者,您可以将它们放在各自独立的模块中)。这也无需在MYSUB中定义module foo implicit none contains integer function myfunc() myfunc = 1 end function myfunc subroutine mysub (res) integer res res = myfunc() end subroutine mysub end module foo

CASE_SENSE_NAMES = YES

此外,Doxygen似乎不会为具有大写名称的过程生成调用/调用者图形,至少在1.8.8版本中。我的Doxyfile中有ul,所以我怀疑这是一个错误。