gpt4 book ai didi

fortran - 是否有必要在将可选参数传递给另一个可选参数之前检查它?

转载 作者:行者123 更新时间:2023-12-04 11:23:47 24 4
gpt4 key购买 nike

关于可选参数的使用,我有以下问题。假设我有以下例程aaa在模块 m_aaa 中定义

MODULE m_aaa
SUBROUTINE aaa(a, b)
INTEGER :: a
INTEGER, OPTIONAL :: b
END SUBROUTINE
END MODULE

现在我有了第二个使用模块 m_aaa 的例程。 .是否可以像这样传递可选参数
! Variant 1:
SUBROUTINE bbb(c, d)
USE m_aaa
INTEGER :: c
INTEGER, OPTIONAL :: d
CALL aaa(c,d)
END SUBROUTINE

或者是否有必要像这样检查可选参数 d 的存在:
! Variant 2:
SUBROUTINE bbb(c, d)
USE m_aaa
INTEGER :: c
INTEGER, OPTIONAL :: d
IF (PRESENT(d)) THEN
CALL aaa(c,d)
ELSE
CALL aaa(c)
ENDIF
END SUBROUTINE

谢谢你的帮助。

最佳答案

在将可选虚拟参数作为实际参数传递给另一个可选虚拟参数之前,没有必要检查它是否存在。

对于不存在的可选实际参数,12.5.2.12 第 4 段(ISO/IEC 1539-1(2010 年 6 月 7 日草案)又名 Fortran 2008)允许这样做:

Except as noted in the list above, it may be supplied as an actual argument corresponding to an optional dummy argument, which is then also considered not to be present.

关于fortran - 是否有必要在将可选参数传递给另一个可选参数之前检查它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367505/

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