プロが教えるわが家の防犯対策術!

C言語を習い始めてから、1ヶ月も経っていないんですが、長いプログラム(1万行くらい)の読解という課題が出ました。

読解を円滑に進めていくためのコツとして、「関数の大まかな呼び出し関係」を調べればよい、と学びました。

そこで質問させてもらいたいのですが、「関数の呼び出し関係を調べる」とは、具体的にどういうことなんでしょうか?関数が関数を呼び出しているんですか??

もうひとつC言語について質問です。
今回与えられたプログラムは1万行くらいあるのですが、そのうちmain関数は50行くらいしかありません。
これって、残り9950行はすべて、main関数の動作のためにあるんですか??

以上、初歩的な質問かもしれませんが、ご指導願います。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/03 23:26

>関数が関数を呼び出しているんですか??


そうです、main が関数 hoge() と fuge() を呼んで、さらに hoge() が関数 boke() と poke() を呼んで。。。という関係を調べて、
おおまか(main側)から枝葉末節(呼出している関数が標準ライブラリのみ)の方向に調べるのが基本です。

>そのうちmain関数は50行くらいしかありません。
普通です。正常なプログラマであれば、長々と main ブロックを書いたりしません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/03 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!