Fortran Coder

查看: 20187|回复: 10
打印 上一主题 下一主题

[求助] 模块交叉引用

[复制链接]

6

帖子

1

主题

0

精华

入门

F 币
31 元
贡献
16 点
跳转到指定楼层
楼主
发表于 2015-4-9 08:45:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
modula a
modula b

a use b
b use a

fortran 怎么办?


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2015-4-9 09:03:25 | 只看该作者
把 a 和 b 的公共部分提取出来当做 C
然后 a use c , b use c

6

帖子

1

主题

0

精华

入门

F 币
31 元
贡献
16 点
板凳
 楼主| 发表于 2015-4-9 12:43:50 | 只看该作者
vvt 发表于 2015-4-9 09:03
把 a 和 b 的公共部分提取出来当做 C
然后 a use c , b use c

还有别的办法吗?
比如C++,类的前置声明.
fortran有相应的解决方案么?
fortran2008编译能通过吗?

6

帖子

1

主题

0

精华

入门

F 币
31 元
贡献
16 点
地板
 楼主| 发表于 2015-4-9 12:50:08 | 只看该作者
具体是这样的,编译有依赖关系
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



  

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

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

个么请问lz,A和B的交叉部分在哪里?变量?方法?
仅仅是变量,个么2楼的建议屡试不爽,可以写module也可写头文件,编译是加-cpp选项
仅仅是方法,个么直接上C++,即使Fortran2008的OOP也太磕碜了
变量方法都有,分而治之

6

帖子

1

主题

0

精华

入门

F 币
31 元
贡献
16 点
6#
 楼主| 发表于 2015-4-10 08:47:10 | 只看该作者
fortran08有没有类前置声明?

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

7#
发表于 2015-4-10 10:51:37 | 只看该作者
zhan 发表于 2015-4-9 12:50
具体是这样的,编译有依赖关系
module aaa
use module bbb

粗略看了一下代码,为啥要分成2个互相交叉引用的module?
合并成一个或者简单继承关系的不行吗?
本质上Fortran的OOP更类似于C模拟面向对象而不是C++

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

8#
发表于 2015-4-10 11:16:48 | 只看该作者
zhan 发表于 2015-4-9 12:50
具体是这样的,编译有依赖关系
module aaa
use module bbb

粗略看了一下代码,为啥要分成2个互相交叉引用的module?
合并成一个或者简单继承关系的不行吗?
本质上Fortran的OOP更类似于C模拟面向对象而不是C++

6

帖子

1

主题

0

精华

入门

F 币
31 元
贡献
16 点
9#
 楼主| 发表于 2015-4-10 12:45:27 | 只看该作者
3Q!
我写了很多这样的模块.
用C++风格写的,现在想组合起来,遇到了编译依赖的麻烦.
想知道fortran08是不是已经可以解决这种问题.

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

10#
发表于 2015-4-10 13:03:24 | 只看该作者
zhan 发表于 2015-4-10 12:45
3Q!
我写了很多这样的模块.
用C++风格写的,现在想组合起来,遇到了编译依赖的麻烦.

08标准也没戏
熟悉C++的话,实在没必要继续搞Fortran,除非历史遗留代码
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-6-2 10:44

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表