【发布时间】:2013-05-21 10:10:09
【问题描述】:
在 Fortran 中可以有函数指针吗?现在我有一个这样的代码:
subroutine flag(iflag,a,b)
integer n, a, b, ii, iflag
do ii = 1, n
if (iflag.eq.0) a+b
else a-b
end do
return
end
变量“n”有一个巨大的价值,所以要运行这段代码,我觉得我在“if”命令上浪费了很多时间。是否可以编写函数指针之类的东西(我不确定我的意思),以便在代码中执行以下操作:
subroutine flag(iflag,a,b)
*depending on the iflag the subroutine flag is automatically
precompiled to call either flag_plus or flag_minus*
return
end
subroutine flag_plus(a,b)
integer n, a, b, ii
do ii = 1, n
a+b
end do
return
end
subroutine flag_minus(a,b)
integer n, a, b, ii
do ii = 1, n
a-b
end do
return
end
如果可能的话,我可以通过避免“if”循环来节省大量时间。这样的事情远程可能吗?
【问题讨论】:
-
您不必将
return放入每个end。子程序还能做什么其他事情然后返回?同样对于 Fortran 77,代码通常应为大写。