よくある質問(FAQ)

CasePlayer2インクルードパスの検索順序はどのようなりますか?

プリプロセッサの設定について

質問

#includeによるヘッダファイルの検索の順番は処理系依存になっていると思いますが、CasePlayer2の場合、「#include <文字列>」と「#include "文字列"」の記述によるヘッダファイルの検索はどのように扱われますか?

回答

下記①→②→③(→④)の順番で検索します。

ここでたとえば

test.c => test.h => sub.h

のように多重にインクルードしている場合、sub.hの検索順序に関して、test.cのあるフォルダを「入力ファイルと同じフォルダ」と呼び、test.hのあるフォルダを「現在開いているファイルと同じフォルダ」と呼びます。

【ANSI-Cモード】
「#include <文字列>」という形式の場合
①システムインクルードパスに指定されたフォルダ
②ユーザインクルードパスに指定されたフォルダ
③入力ファイル(ソースファイル)と同じフォルダ
④現在開いているファイル(ソースファイル・ヘッダファイル)と同じフォルダ

「#include "文字列"」という形式の場合
①現在開いているファイル(ソースファイル・ヘッダファイル)と同じフォルダ
②ユーザインクルードパスに指定されたフォルダ
③システムインクルードパスに指定されたフォルダ
④入力ファイル(ソースファイル)と同じフォルダ

【GNU-C/C99モード】
「#include <文字列>」という形式の場合
①システムインクルードパスに指定されたフォルダ
②ユーザインクルードパスに指定されたフォルダ
③入力ファイル(ソースファイル)と同じフォルダ

「#include "文字列"」という形式の場合
①現在開いているファイル(ソースファイル・ヘッダファイル)と同じフォルダ
②ユーザインクルードパスに指定されたフォルダ
③システムインクルードパスに指定されたフォルダ
④入力ファイル(ソースファイル)と同じフォルダ