小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【C言語】#include <hoge.h>と#include "hoge.h"の違い

はじめに

C言語をはじめて習うときに必ずでてくる#include。

#include <hoge.h>
#include "hoge.h"

今頃になって、#include <hoge.h>と#include "hoge.h"の違いを正しく理解できていなかったことに気づきました。

#include <hoge.h>と"hoge.h"の違い

ぼくは、#include <hoge.h>と"hoge.h"の使い分けを以下のように先輩に習いました。

  • <>は、windows標準のヘッダファイルをインクルードするときに使う
  • ""は、自分たちで作っているユーザヘッダファイルをインクルードするときに使う

これにはちゃんと理由があって、ヘッダファイルを探すときの優先順位に関係しています。

ファイル名が角括弧でくくられている場合は、コンパイラ内に指定されているデフォルトの場所(ディレクトリ)を優先的に探す。
ダブルクォーテーションでくくられている場合は、カレントディレクトリ(ソースが置かれているディレクトリ・コンパイルを行うディレクトリ)を優先的に探す。
C言語のプリプロセスのメモ(Hishidama's C pre-process Memo) はてなブックマーク - C言語のプリプロセスのメモ(Hishidama's C pre-process Memo)

Windowsが標準で用意しているヘッダファイルは、コンパイラ内に指定されている場所から探した方が早く見つかります。反対に、ユーザヘッダファイルは、カレントディレクトリから探したほうが早く見つかります。

<>と""といった単純な違いですが、意外と奥が深いんですね。