C++の基礎 - プリプロセッサ

提供: MochiuWiki : SUSE, EC, PCB

2024年9月3日 (火) 06:01時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <br><br> == 条件付きインクルード == 条件付きインクルードを行うには、<code>__has_include</code>プリプロセッサディレクティブを使用する必要がある。<br> ただし、<code>__has_include</code>は、C++ 17以降で利用可能な機能である。<br> <br> <syntaxhighlight lang="c++"> #if __has_include("hoge.h") #include "hoge.h" #elif __has_include("piyo.h") #include "piyo.h" #endif </syntaxhig…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要



条件付きインクルード

条件付きインクルードを行うには、__has_includeプリプロセッサディレクティブを使用する必要がある。
ただし、__has_includeは、C++ 17以降で利用可能な機能である。

 #if __has_include("hoge.h")
    #include "hoge.h"
 #elif __has_include("piyo.h")
    #include "piyo.h"
 #endif


  1. まず __has_include("hoge.h") では、hoge.hファイルの存在を確認する。
  2. hoge.hファイルが存在する場合は、それをインクルードする。
  3. hoge.hファイルが存在しない場合は、__has_include("piyo.h") で piyo.hファイルの存在を確認する。
  4. piyo.hファイルが存在する場合は、それをインクルードする。


※注意
この方法は、コンパイル時にチェックを行う。
実行時のファイル存在チェックではないことに注意する。