• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:f90で構造体を引数で渡す)

f90で構造体を引数で渡す

このQ&Aのポイント
  • F90のテストコードにおいて、構造体を引数で渡す方法に誤りがあるようです。
  • GFORTRANでコンパイルすると、タイプの不一致の警告が表示されます。
  • なぜこの方法では構造体を引数で渡せないのか、原因を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8469/18132)
回答No.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でまとめてしまえばよいでしょう。

qhtsige
質問者

お礼

丁寧なご教示ありがとうございます。 同じ定義であっても複数の個所で定義したときの警告なのですね。道理で同じ定義をINCLUDE文で行っても解決しないわけですね。 初めてのMODULE文で定義すれば解決しました。 ありがとうございました。

関連するQ&A