Fortran Coder

标题: 模块交叉引用 [打印本页]

作者: zhan    时间: 2015-4-9 08:45
标题: 模块交叉引用
modula a
modula b

a use b
b use a

fortran 怎么办?



作者: vvt    时间: 2015-4-9 09:03
把 a 和 b 的公共部分提取出来当做 C
然后 a use c , b use c
作者: zhan    时间: 2015-4-9 12:43
vvt 发表于 2015-4-9 09:03
把 a 和 b 的公共部分提取出来当做 C
然后 a use c , b use c

还有别的办法吗?
比如C++,类的前置声明.
fortran有相应的解决方案么?
fortran2008编译能通过吗?
作者: zhan    时间: 2015-4-9 12:50
具体是这样的,编译有依赖关系
module aaa
use module bbb
  function geta(pb) result(aaa)
   real:: aaa  
......
   type(bbb),pointer:: pb
   aaa=pb%ccc
  end function geta
end module aaa

module bbb
use module aaa
  type:: bbb
   real:: ccc
   .....
  contains
   procedure:: getb
  end type bbb
contains
  function getb
   this%ccc=geta()
  end function

end module bbb



  
作者: pasuka    时间: 2015-4-9 12:52
zhan 发表于 2015-4-9 12:43
还有别的办法吗?
比如C++,类的前置声明.
fortran有相应的解决方案么?

个么请问lz,A和B的交叉部分在哪里?变量?方法?
仅仅是变量,个么2楼的建议屡试不爽,可以写module也可写头文件,编译是加-cpp选项
仅仅是方法,个么直接上C++,即使Fortran2008的OOP也太磕碜了
变量方法都有,分而治之
作者: zhan    时间: 2015-4-10 08:47
fortran08有没有类前置声明?
作者: pasuka    时间: 2015-4-10 10:51
zhan 发表于 2015-4-9 12:50
具体是这样的,编译有依赖关系
module aaa
use module bbb

粗略看了一下代码,为啥要分成2个互相交叉引用的module?
合并成一个或者简单继承关系的不行吗?
本质上Fortran的OOP更类似于C模拟面向对象而不是C++
作者: pasuka    时间: 2015-4-10 11:16
zhan 发表于 2015-4-9 12:50
具体是这样的,编译有依赖关系
module aaa
use module bbb

粗略看了一下代码,为啥要分成2个互相交叉引用的module?
合并成一个或者简单继承关系的不行吗?
本质上Fortran的OOP更类似于C模拟面向对象而不是C++
作者: zhan    时间: 2015-4-10 12:45
3Q!
我写了很多这样的模块.
用C++风格写的,现在想组合起来,遇到了编译依赖的麻烦.
想知道fortran08是不是已经可以解决这种问题.
作者: pasuka    时间: 2015-4-10 13:03
zhan 发表于 2015-4-10 12:45
3Q!
我写了很多这样的模块.
用C++风格写的,现在想组合起来,遇到了编译依赖的麻烦.

08标准也没戏
熟悉C++的话,实在没必要继续搞Fortran,除非历史遗留代码
作者: zhan    时间: 2015-4-13 08:23
项目要求fortran
返工!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2