Fortran Coder

查看: 8369|回复: 8
打印 上一主题 下一主题

[指针] 如何使用函数变量

[复制链接]

11

帖子

3

主题

0

精华

入门

F 币
50 元
贡献
30 点
跳转到指定楼层
楼主
发表于 2017-10-24 18:52:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义两个function, f1, f2,
在subroutine 中 使用名称 f
根据输入不同,可以使f为f1, 或者为f2。
这个怎么实现?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

11

帖子

3

主题

0

精华

入门

F 币
50 元
贡献
30 点
沙发
 楼主| 发表于 2017-10-25 08:39:35 | 只看该作者
是描述不清楚吗?

259

帖子

0

主题

0

精华

版主

World Analyser

F 币
717 元
贡献
510 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
板凳
发表于 2017-10-25 09:09:43 | 只看该作者
可以用 Procedure Pointers 这个东西(中文应该叫 过程指针)

[Fortran] 纯文本查看 复制代码
Module Proc2
  Implicit None
  
  interface
    Subroutine IF_PROC(x,y)
      integer :: x , y
    End Subroutine IF_PROC
  end interface
  
contains

  Subroutine f1(x,y)
    integer :: x , y
    write(*,*) x+y
  End Subroutine f1
  
  Subroutine f2(x,y)
    integer :: x , y
    write(*,*) x-y
  End Subroutine f2
  
End Module Proc2
  
Program Proc_pointer
  use Proc2
  Implicit None
  integer :: x , y , n
  Procedure(IF_PROC) , pointer :: proc
  read(*,*) n , x , y
  if(n==1) then
    proc => f1
  else
    proc => f2
  end if
  call proc(x,y)
End Program Proc_pointer

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

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

地板
发表于 2017-10-25 09:41:23 | 只看该作者
leeyazhou 发表于 2017-10-25 08:39
是描述不清楚吗?

的确是描述不清楚,
输入不同
这个提法颇为含糊?
究竟怎么个不同呢?输入变量个数不同?输入变量的类型不同?输入变量的数值不同?
还是希望类似C++里面模板和泛型的功能?

11

帖子

3

主题

0

精华

入门

F 币
50 元
贡献
30 点
5#
 楼主| 发表于 2017-10-25 10:41:59 | 只看该作者
kyra 发表于 2017-10-25 09:09
可以用 Procedure Pointers 这个东西(中文应该叫 过程指针)

[mw_shl_code=fortran,true]Module Proc2

谢谢,理解了。

11

帖子

3

主题

0

精华

入门

F 币
50 元
贡献
30 点
6#
 楼主| 发表于 2017-10-25 10:42:59 | 只看该作者
pasuka 发表于 2017-10-25 09:41
的确是描述不清楚,这个提法颇为含糊?
究竟怎么个不同呢?输入变量个数不同?输入变量的类型不同?输入 ...

熟悉C C++,新学fortran。问的是C语言中的函数指针

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
7#
发表于 2017-10-26 13:13:51 | 只看该作者

11

帖子

3

主题

0

精华

入门

F 币
50 元
贡献
30 点
8#
 楼主| 发表于 2017-10-27 12:36:13 | 只看该作者
使用Interface可定义函数变量,在gfortran中可用。但是在CVF6.6中不可使用。
interface是新特性,在老版的编译器中,如何实现函数变量定义?

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1598 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

9#
发表于 2017-10-27 13:07:01 | 只看该作者
放弃老版编译器,让淘汰的编译器入土为安吧。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 22:00

Powered by Tencent X3.4

© 2013-2024 Tencent

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