ヘッダファイルが存在するかどうかをチェックする(Clang)

Clangには、__has_include()という特殊なプリプロセス時判定機能があるようです。

// <atomic>ヘッダを持っているかチェックする
#if defined( __clang__ )
#if __has_include( <atomic> )
  // ...
#endif
#endif

Clangは、使用する標準ライブラリを切り替えられることもあって、コンパイラがClangであることと、コンパイラバージョンだけでは、ライブラリの機能が使えるかどうかわかりません。そういった状況でこの機能が有効なようです。


GCCでも話は出ているようです。
__has_include() macro implementation can be accepted in GCC?