2015-05-06 2 views
0

Я хочу использовать оператор .ef., однако оператор не принимает необязательные аргументы. Возможно ли сохранить мою функцию и иметь возможность работать с оператором?Фортран Функции с необязательными аргументами

Module Core 
Implicit None 

Interface Operator (.ef.) 
    Module Procedure fes 
End Interface Operator (.ef.) 

Contains 

Function fes & 
    (   & 
    nm, wn  & 
)    & 
    Result (located) 

Logical :: located 
Character (Len=*), Intent (In) :: nm 
Character (Len=*), Intent (In), Optional :: wn 

End Function 

Gfortran возвращается следующая проблема

lib/scriptus/core.f:62:0: 

Function fes & 
1 
Error: Second argument of operator interface at (1) cannot be optional 

ответ

2

Вы не можете иметь дополнительные аргументы для определенных операций. Fortran 2008, Cl. 12.4.3.4.2. говорит:

1 ... The dummy arguments shall be nonoptional dummy data objects ...

Это то, что ваш компилятор ссылается, когда он излучается ошибку:

Error: Second argument of operator interface at (1) cannot be optional

Примечание: вы можете иметь процедуры с необязательными аргументами, и они могут появляться в модулях, но они не могут ссылаться в интерфейсных блоках с ключевым словом operator. Ваша функция fes выглядит хорошо, и это не проблема. Ваша проблема заключается в том, что блок интерфейса сопоставляет оператор функции.

+0

@Zeus вместо того, чтобы добавить второй вопрос к этому, вы должны задать ему новый вопрос. – casey

Смежные вопросы