24小时热门版块排行榜    

查看: 608  |  回复: 5

shiyongjie

银虫 (正式写手)

[交流] 【求助】module 里面封装的程序的形参能是指针类型的吗?【已完结】 已有2人参与

散50金币,求解决方法

问题描述如下:
在module 里定义个一个子程序。如
module aa
  contains
    subroutine   test(a,pointer)
     ..................
     .......................
    end subroutine
end module
当我在主程序main中调用子程序test的时候,需要使用use aa,use是显示定义接口的。而fortran规定使用指针作为函数指针时,必须使用interface 。即在主程序中必须使用
interface
  subroutine  test
end interface
这样一来,又是use,又是interface,两次定义了接口,就出错了。

请问各位有什么办法来解决这个问题。前提是test必须封装在module里,而且形参必须是指针类型。

[ Last edited by 余泽成 on 2010-9-25 at 23:09 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)


shiyongjie(金币+5): 2010-09-24 20:57:46
余泽成(金币+1):谢谢参与应助! 2010-09-24 21:35:34
这个问题是这样的,如果不用module来封装,使用指针作为函数形参时必须使用interface,但是用module来封装后,interface就不需要了,这个信息已经包含在module里面了。主程序只需要use就行了。
2楼2010-09-24 08:43:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shiyongjie

银虫 (正式写手)

谢谢你的回答。但是仍然有问题,我把程序封装在module里面,用了use,把interface去掉了。结果编译的时候就出现问题了,说需要使用interface来定义。
另外,说明一下,我这个module是编译成DLL文件的
3楼2010-09-24 21:00:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

shiyongjie(金币+45):已经解决了。金币都给你吧 2010-09-25 12:24:01
你试着在module里面就给出interface看看,即在contain前面给出。
4楼2010-09-25 09:22:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
你的解决方法是怎么样的?
5楼2010-09-25 14:20:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shiyongjie

银虫 (正式写手)

引用回帖:
Originally posted by hakekill at 2010-09-25 14:20:05:
你的解决方法是怎么样的?

呵呵,其实就是你最开始说的方法。很奇怪,最开始调试的时候,不知道是不是哪儿写错了,还是怎么的。只用use老是出错。后来等第二天去搞就都好了。
6楼2010-09-27 08:03:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shiyongjie 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见