在处理optional论点时,fortran我认为使用present()内在函数进行分支是典型的,即:
subroutine foo(ii,jj)
implicit none
integer, intent(in) :: ii
integer, optional :: jj
if (present(jj)) then
! do something
else
! do something else
end if
end subroutine foo
我的假设(来自一个C++世界)是present()希望是一个编译时构造,并且不会有任何相关的运行时性能损失。我希望编译器应该能够(应该被要求?)优化if上面显示的语句,具体取决于是否foo(ii)被foo(ii,jj)调用。
编译器在实践中如何present()处理内在函数?规范是否fortran保证某些行为?