- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:f90で構造体を引数で渡す)
f90で構造体を引数で渡す
このQ&Aのポイント
- F90のテストコードにおいて、構造体を引数で渡す方法に誤りがあるようです。
- GFORTRANでコンパイルすると、タイプの不一致の警告が表示されます。
- なぜこの方法では構造体を引数で渡せないのか、原因を知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
警告だから,そのままでもプログラムは正しく動く。 しかしMAIN PROGRAMで定義したTP_STRとSUBROUTINEの中で定義したTP_STRは,同じ場所で定義されていないので警告が出る。実際の定義内容が同一かどうかは問題ではありません。 警告をなくしたいのなら,例えば MODULE M_TP_STR IMPLICIT NONE TYPE TP_STR INTEGER I ENDTYPE END MODULE M_TP_STR PROGRAM TEST USE M_TP_STR IMPLICIT NONE TYPE (TP_STR) :: STR STR%I = 1 CALL SUB(STR) STOP END SUBROUTINE SUB(STR) USE M_TP_STR IMPLICIT NONE TYPE (TP_STR) :: STR INTEGER X X = STR%I RETURN END のようにMODULEでまとめてしまえばよいでしょう。
お礼
丁寧なご教示ありがとうございます。 同じ定義であっても複数の個所で定義したときの警告なのですね。道理で同じ定義をINCLUDE文で行っても解決しないわけですね。 初めてのMODULE文で定義すれば解決しました。 ありがとうございました。