0

我无法理解这两个函数是如何产生歧义的。如果类型更改为整数或实数,编译器不会标记任何歧义。

Function split_to_str_unidim  &
  (                           &
    a, delim, mold,           &
    pos                       &
  )                           &
    Result (bn)

  Character (len=*), Intent (in) :: a, delim, mold
  Character (len=*), Intent (in), Optional :: pos

  Character (len=65), Allocatable :: bn(:)

End Function


Function split_to_str        &
  (                          &
    a, delim, b1, b2,        &
    b3, b4, b5, b6, b7, b8,  & 
    pos                      &
  )                          &
    Result (b)

  Character (len=*), Intent (in) :: a, delim
  Character (len=*), Intent (in), Optional :: pos

  Character (len=*), Intent (out) :: b1, b2
  Character (len=*), Intent (out), Optional :: b3, b4, b5, b6, b7, b8
  Logical :: b

End Function
4

1 回答 1

1

一个电话如

split_to_str(a,b,c,d)

a,b,c,d仅使用您的两个函数之一无法明确识别所有字符串在哪里。这是模棱两可的。

为了消除歧义,您必须使签名(非可选,intent(in) 参数列表)唯一。从你最近的 Qs 和正如你已经与其他人讨论过的那样,我对之前的内容没有什么要补充的。

我很惊讶将类型从character(len=*)to更改为realorinteger没有相同的问题。

于 2014-11-12T15:53:07.633 回答