ヘッダファイル内で他のヘッダファイルをインクルードする理由
Posted: 2014年8月22日(金) 20:27
ヘッダファイルは、Cファイル間のインターフェースの役割だと思っています。
したがって、公開する関数、構造体定義、define定義などを書きます。
(ヘッダファイル+Cファイルをクラス(モジュール)と考えるなら、パブリックな関数や変数を書きます)
ヘッダファイルのインクルードは、
できるだけ、使用元になるCファイル内で行うことが望ましいと思います。
なぜなら、
ヘッダファイル内で他のヘッダファイルをインクルードすることは、
循環インクルードのリスクもありますし、ファイル間の依存関係を強めるからです。
では、
ヘッダファイル内で他のヘッダファイルをインクルードする理由はなんでしょうか?
主に以下の2つのようなことでしょうか??
1.下位モジュールの定義を、新たな定義に組み込みたい
例えば、下位モジュールで定義した構造体を、新たに定義する構造体のメンバに組み込む
2.下位モジュールで定義した構造体を引数にした関数を公開したい。
例えば、上位-中位-下位というモジュール構造があり、下位モジュールで定義した構造体変数を
上位→中位→下位の順に渡したい場合、中位モジュールの公開する関数の引数にすることになる。
言葉ではわかりにくいかもしれませんが、よろしくお願いします。
したがって、公開する関数、構造体定義、define定義などを書きます。
(ヘッダファイル+Cファイルをクラス(モジュール)と考えるなら、パブリックな関数や変数を書きます)
ヘッダファイルのインクルードは、
できるだけ、使用元になるCファイル内で行うことが望ましいと思います。
なぜなら、
ヘッダファイル内で他のヘッダファイルをインクルードすることは、
循環インクルードのリスクもありますし、ファイル間の依存関係を強めるからです。
では、
ヘッダファイル内で他のヘッダファイルをインクルードする理由はなんでしょうか?
主に以下の2つのようなことでしょうか??
1.下位モジュールの定義を、新たな定義に組み込みたい
例えば、下位モジュールで定義した構造体を、新たに定義する構造体のメンバに組み込む
2.下位モジュールで定義した構造体を引数にした関数を公開したい。
例えば、上位-中位-下位というモジュール構造があり、下位モジュールで定義した構造体変数を
上位→中位→下位の順に渡したい場合、中位モジュールの公開する関数の引数にすることになる。
言葉ではわかりにくいかもしれませんが、よろしくお願いします。