0
コンパイル時の呼び出し元と呼び出しの不一致の検出(ifortの-gen-interfaces -warn interfaces
)を使用していくつかの警告を発見しました。私は、次のような状況において、いくつかの警告を受けた:Fortranの呼び出し元と呼び出し先の不一致:サイズ1の配列とスカラー
- サブルーチンはケース1から
real*8 x(1)
(すなわち配列) - 反対期待しながら、発信者は、サブルーチンに可変
real*8 x
(すなわちスカラー)を通過します。サブルーチンはx
今
real*8 x
などを宣言しながら、発信者は、サブルーチンに
real*8 x(1)
を渡し、それが受け入れられますか?私が見る限り、それに問題はない、私は正しい?それとも問題が起こる可能性がありますか?
おそらく["allow by Fortran standard"](https://stackoverflow.com/q/7805467)と "うまくいく"の違いがあります。許可されていないものは、実際に予期しない問題を引き起こす可能性があります。 – francescalus
これはhttp://stackoverflow.com/questions/41630361/passing-scalars-and-array-elements-to-a-procedure-expecting-an-arrayと非常によく似ています。サブルーチン。 –
以前は機能していましたが、コンパイル後に関数/サブルーチンがリンクされている場合もあります。最近(F90以降)、MODULE/PROCEDUREを使用していずれかを受け入れ、同じ方法で操作を行う方がよいでしょう。コンパイラは基本的にはより優れているので、引数が正しいかどうかのチェックが増えています。通常、多くの問題が(ほとんどの場合、インターフェイスで)発生します。 – Holmz