C++ では、指定された名前のファイルがインクルード パス内にあるかどうかをコンパイル時にチェックできます。
config.h などのユーザー作成ファイルからコンパイラ設定を取得するライブラリをセットアップしようとしています。ファイルが存在しない場合、ライブラリはデフォルトで動作可能な状態になります。
私はこのようなことをしたいと思います
#IFINCLUDED config.h
# include config.h
#else
# define defaultLibrarySettings
#endif
回避策は、次のようなことをすることだと思います:
#include "config.h
#ifndef defaultLibrarySettings
# define defaultLibrarySettings
#endif
ただし、ユーザーはまだそこのパスのどこかに「config.h」ファイルが必要です。そうしないと、未解決のインクルードが取得されます。
最終的な考えは、次のようなことをすることです
#ifdef USE_EXTERNAL_SETTINGS
# include "config.h"
#else
# define defaultLibrarySettings
#endif
ただし、これには、ユーザーがライブラリを含めるたびに USE_EXTERNAL_SETTINGS を #define する必要があります。
TLDR: 最初の例に示すように、ファイルがインクルード パスに存在するかどうかを確認する簡単な方法はありますか?