FromNandの日記

自分的備忘録

【C言語】ヘッダファイルの書き方

【1】すべてのヘッダファイルにはインクルードガードをつけるべき。

// これを書くことで重複インクルードがなくなる

#ifndef _HEADER_H

#define _HEADER_H

// 処理を書いていく

#endif


【2】あるヘッダファイルAが常にあるヘッダファイルBに依存するとき、ヘッダファイルAではヘッダファイルBをインクルードするべき。

これをしないとヘッダファイルAを使用する場合は、その前にヘッダファイルBをインクルードすることを常にソースファイル側で記述しなければならない。こうなると、ソースファイルでインクルードするファイルがどんどん多くなって、管理が難しくなる。


また、ヘッダファイルには「プライベートヘッダファイル」と「パブリックヘッダファイル」というものがある。

プライベートヘッダファイルは内部の詳細を細かく書いてあるため、パブリックヘッダファイルからはプライベートヘッダファイルをincludeしてはいけない。

(内部の詳細を意識させる必要はないため)

関数のプロトタイプ宣言などをパブリックヘッダに記述し、その関数を実際に定義するソースファイルにはstructの詳細などを書いたプライベートヘッダをincludeすればいい。

ここで注意してほしいのは、ユーザはパブリックヘッダファイルをインクルードするだけで関数を使用できることだ。

これによって、関数の実装を意識させずに関数を利用してもらうことができる。