• ベストアンサー

C言語 関数の呼び出し関係について

C言語を習い始めてから、1ヶ月も経っていないんですが、長いプログラム(1万行くらい)の読解という課題が出ました。 読解を円滑に進めていくためのコツとして、「関数の大まかな呼び出し関係」を調べればよい、と学びました。 そこで質問させてもらいたいのですが、「関数の呼び出し関係を調べる」とは、具体的にどういうことなんでしょうか?関数が関数を呼び出しているんですか?? もうひとつC言語について質問です。 今回与えられたプログラムは1万行くらいあるのですが、そのうちmain関数は50行くらいしかありません。 これって、残り9950行はすべて、main関数の動作のためにあるんですか?? 以上、初歩的な質問かもしれませんが、ご指導願います。

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

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> 「関数の呼び出し関係を調べる」とは、具体的にどういうことなんでしょうか? main関数から別の関数を呼び出して、そこからまた別の関数を呼び出して、というように、関数の呼び出し経路を樹形図のように書いてみれば、分かりやすくなるということです。 > 関数が関数を呼び出しているんですか?? はい、そうです。 > 今回与えられたプログラムは1万行くらいあるのですが、そのうちmain関数は50行くらいしかありません。 > これって、残り9950行はすべて、main関数の動作のためにあるんですか?? どんなプログラムかにもよりますが、概ねそう考えてよいでしょう。そうでないケースを説明すると混乱するだけなのでやめておきます。 初心者は手作業で呼び出し関係を調べた方がよいのですが、自分で調べた結果の答え合わせにDoxygenを使うと便利です。 http://www.doxygen.jp/ DoxyfileでCALL_GRAPHとHAVE_DOTをYESに設定すれば、関数の呼び出し関係の図が自動生成されます。(Doxygenの他にGraphvizをインストールするのをお忘れなく) http://www.doxygen.jp/config.html#cfg_call_graph

felon
質問者

お礼

早急に解答していただきありがとうございました。 記載URLも参考にさせてもらいます。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>関数が関数を呼び出しているんですか?? そうです、main が関数 hoge() と fuge() を呼んで、さらに hoge() が関数 boke() と poke() を呼んで。。。という関係を調べて、 おおまか(main側)から枝葉末節(呼出している関数が標準ライブラリのみ)の方向に調べるのが基本です。 >そのうちmain関数は50行くらいしかありません。 普通です。正常なプログラマであれば、長々と main ブロックを書いたりしません。

felon
質問者

お礼

早急な回答をありがとうございました。 おかげで理解が深まりました。

関連するQ&A