期待されている場合、私は複雑な配列が
subroutine foo(cnumbers, n)
integer :: n
complex :: cnumbers(n)
...
end subroutine foo
のような複雑な配列を必要とFortranのサブルーチンを持っていると、後で私が
real :: rnumbers(40)
...
call foo(rnumbers, 20)
ようにそれを呼び出すようにしたいしかし、私が手に本当の配列を渡しますコンパイラエラー:
error #6633: The type of the actual argument differs from the type of the dummy argument.
もちろん、実際の配列は複雑な配列ではないので、これは理解できます。しかし、それを機能させる方法が必要です。サブルーチンfoo
とfoo
の呼び出しが異なるモジュールであり、異なるFortranのファイルにダウン書かれている場合、コンパイラがないため
ないは文句を言うと、すべてが正常に動作します。
誰かがそれを動作させる方法を知っていますか?複雑な配列が予想される場合、実際の配列を渡すには?あなたは同値が動作しません割付け配列が必要な場合は
呼び出し側でさらにコードを表示する必要があります。 'rnumbers'が仮引数でない場合は、複素数配列で等価にすることができます。 –
いいえ、 'rnumbers'はダミーではなく、' real :: rnumbers(40) 'で作成した実際の変数です。ところで、私はインテルFortranコンパイラ15.0.3を使用しています。 – thyme
サブルーチンが外部(明示的なインタフェースなし)の場合、コンパイラは型の問題を検出せず、正常に動作します。 – agentp