くだすれFORTRAN(超初心者用)その4at TECH
くだすれFORTRAN(超初心者用)その4 - 暇つぶし2ch91:デフォルトの名無しさん
09/03/16 22:18:43
サブルーチンがたくさんあるプログラムを作る時はmoduleよりもinterfaceの方が良いですか?
module間で相互にmoduleを参照(use)するとエラーが出て、悲しい状態です。
誰か教えてください。
ちなみに、moduleについて詳しく書いてある本があればそれも教えてください。

92:デフォルトの名無しさん
09/03/17 03:15:21
そのエラーがどんなものか分からないことには何とも・・・

確かにmoduleはよく考えて使わないと面倒な目に合うな
個人的にはFortranやるなら、あんまり細かく部品化しすぎないほうがいいと思う

93:デフォルトの名無しさん
09/03/17 06:23:06
>>91
module の前方参照のみしか許していないコンパイラーが多いよね。
ソースの前方に書いたmodule だけをuse するようにしてごらん。

94:デフォルトの名無しさん
09/03/17 14:24:33
>>91
コンパイラは何?

95:91
09/03/21 12:36:18
返事遅くなりました。すんません。
>92
サブルーチンは使いまくってます。
サブルーチンがないと不便です…。
>93
前方参照はmoduleをprogramより前に書けってことですよね?
moduleは別ファイルです。こんな感じになってます。
ファイルa.f90
module a
use b
contains
subroutine foo
...
end module a
ファイルb.f90
module b
use a
contains
subroutine bar
...
end module b
わかりにくい質問ですんませんでした。
>94
コンパイラはifort(ver.11)です。

inteface使えよって意見は出ないもんなんですね。
みなさんはサブルーチン使うとき、どうやってるでしょう?

96:デフォルトの名無しさん
09/03/21 19:50:38
>>91
>module間で相互にmoduleを参照(use)する
相互にuseするのって不可能じゃないの?
コンパイルするときにuseするモジュールの.modファイルが必要だし。
というか、fortranに限らず相互に呼び合うようなのは概念的に許されるのかな・・・?
もし許されるとしても、混乱の元だろうし非常にまずいような・・・・


>inteface使えよって意見は出ないもんなんですね。
>みなさんはサブルーチン使うとき、どうやってるでしょう?
interfaceの主な用途としては、fortran77で書いた外部サブルーチンを
そのままいじらずに、より安全に使いたいとき、などじゃないかな。
形状引継ぎ配列や割付け配列などの機能を使いたいときは、
いずれにしろそのサブルーチンの修正が必要になるので、そのときは大人しく
モジュールで囲ってモジュールサブルーチンに変更すべきかと思うが。

97:91
09/03/22 10:19:29
>>96
ありがとうございます。
相互に呼び出さないようにするためにはツリー構造を考えないといけないですね。
ちょっと面倒くさい気がします。

98:デフォルトの名無しさん
09/03/23 20:26:55
結局>>91のエラーは解決したの?

99:91
09/03/24 08:27:42
相互参照しないように書けば、エラーは消えます。
ただ、皆さんがどういう風に対応してるのか知りたかったのです。
お相手ありがとうございました。

100:デフォルトの名無しさん
09/03/25 12:58:20
>>99
オレ、一個の超特大module にしている。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch