如果我有此代碼傳遞字符串作爲參數時虛設已經規定長度
module test
contains
subroutine xx(name)
character(len=20), intent(in), optional :: name
if (present(name)) then
print *, name
else
print *, "foo"
endif
end subroutine
end module
program x
use test
call xx()
call xx("foo2")
end program
因爲「foo2的」它不會編譯沒有長度爲20,並且編譯器抱怨
test.f90(17): error #7938: Character length argument mismatch. ['foo2']
call xx("foo2")
-----------^
如何在不修改子程序dummy len規範的情況下使這件事情起作用?是否強制要求一箇中間變量以相同的長度聲明並在通話時傳遞?
問題是具有字符(len = 20)的例程位於我不應該修改的代碼的一部分中。 – 2011-01-25 10:13:42