24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2901  |  回复: 6

信任开花

铁杆木虫 (知名作家)

[交流] 【求助】Fortran如何调用模块中子程序已有1人参与

我在写main.f90程序的时候,需要调用test1.f90中的fun3函数


而test1.f90是一个模块函数:

module test_test
………………
……………………

SUBROUTINE fun3

……………………

……………………
end module test_test


我在main.f90中用了

program main

         use test_test

…………………………
…………………………
…………………………
call fun3
…………………………

…………………………
end program main

然后编译的时候出现错误:main.f90(281): error #6405: The same named entity from different modules and/or program units cannot be referenced.


不知该如何处理?


谢谢大家帮助
回复此楼
从不温柔,从不体贴,从不讲理
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbbb188

铜虫 (初入文坛)


余泽成(金币+1):谢谢参与应助! 2010-09-06 20:50:19
信任开花(金币+5):谢谢提醒和关注 2010-09-07 17:40:22
其他模块中有同名的函数,检查一下吧
2楼2010-09-06 19:39:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信任开花

铁杆木虫 (知名作家)

引用回帖:
Originally posted by dbbb188 at 2010-09-06 19:39:24:
其他模块中有同名的函数,检查一下吧

其实上面已经说比较清楚啦哈,我也知道是这个错误

就是不知道怎么调用模块中的子函数或者子程序


然后我的主程序中包含如下语句:

use module
…………
call fun()

其中模块中包含了子程序fun()

所以出现了以上的同名函数的错误
从不温柔,从不体贴,从不讲理
3楼2010-09-07 08:08:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liubin1984

木虫 (著名写手)

不纠结的男人

信任开花(金币+5):谢谢,我刚开始学,不知道如何声明,可否举个例子? 2010-09-07 17:38:16
引用回帖:
Originally posted by 信任开花 at 2010-09-07 08:08:21:

其实上面已经说比较清楚啦哈,我也知道是这个错误

就是不知道怎么调用模块中的子函数或者子程序


然后我的主程序中包含如下语句:

use module
…………
...

在主程序前声明一下子例行程序看看
路漫漫其修远兮,吾将上下而求索
4楼2010-09-07 17:34:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信任开花

铁杆木虫 (知名作家)

引用回帖:
Originally posted by liubin1984 at 2010-09-07 17:34:30:

在主程序前声明一下子例行程序看看

不知道如何声明啊

可能举个例子呢
从不温柔,从不体贴,从不讲理
5楼2010-09-07 17:39:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liubin1984

木虫 (著名写手)

不纠结的男人


信任开花(金币+5):正在编译,看看行不行 2010-09-07 17:45:01
余泽成(金币+1):谢谢参与应助! 2010-09-07 23:50:50
引用回帖:
Originally posted by 信任开花 at 2010-09-07 17:39:00:

不知道如何声明啊

可能举个例子呢

不知道能不能用,就是在主程序声明部分中声明一下子例行程序,例如
SUBROUTINE Fun3
就是简单的声明一下,具体情况能把代码发上来看看么
路漫漫其修远兮,吾将上下而求索
6楼2010-09-07 17:43:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChemiAndy

木虫 (正式写手)


★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
xzhdty: 金币+1, 欢迎常来程序语言 2012-05-17 06:24:20
偶然遇到了一个类似的问题,发现了解决办法:
使用多个module,可能会遇到变量名成或是函数名称重复的问题,解决办法是在use命令后面临时把module里面的变量或是函数名称改名。。e.g.:

module A
  implicit none
  integer va
end module

module B
  implicit noe
  integer va
end module

programe main
  use A, aa=>va  !把module A中的变量va临时改为aa来使用
  use B
  implicit none
  ...

(ref: http://wenku.baidu.com/view/45ad2564783e0912a2162a81.html)
7楼2012-05-17 05:38:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 信任开花 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见