gpt4 book ai didi

fortran - 如何包装 fortran write 语句

转载 作者:行者123 更新时间:2023-12-02 10:56:12 26 4
gpt4 key购买 nike

我想包装 fortran write-statement在包含一些附加调试逻辑的自定义子例程或函数中。

但我目前一直在定义函数/子例程的原型(prototype)。这可能吗?如果是,怎么办?

最佳答案

您的问题标题表现出误解,尽管文字表明您了解得更多。不过,需要说明的是,write 是一条 Fortran 语句,它既不是子例程,也不是函数。

我认为您有多种选择。我偶尔使用的一种方法是编写一个返回字符串的函数。也许

function error_message(error)
character(len=*), intent(in) :: error
character(len=:), allocatable :: error_message
error_message = 'ERROR: '//trim(error)
end function error_message

然后你就可以像这样使用

write(*,*) error_message('Oh s**t')

您当然可以编写具有副作用的子例程或函数,其中包括写入输出 channel ,但如果采用这种方法,您必须小心遵守递归 I/O 的规则。

编辑

OP发表评论后。

如果您想关闭调试消息,另一个选择是将它们定向到空设备或文件,例如 Linux 上的 /dev/null 或 Linux 上的 NUL window 。类似的东西

integer, parameter :: debug_channel = 99
logical, parameter :: debugging = .false.
...
if (debugging) then
open(debug_channel, file='NUL')
else
open(debug_channel, file='debuglog'
end if

然后

write(debug_channel,*) 'message'

关于fortran - 如何包装 fortran write 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19906446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com