CLion 2026.2 Help

ヘッダーガード

ヘッダーガード(英語)は、ヘッダーが複数回インクルードされるのを防ぐプリプロセッサーディレクティブのパターンです。 ヘッダーガードは、コードの内容全体を #ifndef#if !defined などの)ブロックにラップします。

#ifndef MY_HEADER_H #define MY_HEADER_H //... #endif

ヘッダーファイルテンプレートを編集する

デフォルトで、ヘッダーガードは新しいヘッダーの初期内容を指定する ファイルテンプレートに含まれています。 たとえば、ヘッダーガードの代わりに #pragma once(英語) を使用することにした場合は、これらのテンプレートを編集できます。 これについては、 設定 | エディター | ファイルおよびコードテンプレート に移動し、 ファイル タブを開いてください。 リストから C ヘッダーファイル または C++ クラスヘッダーファイル を選択し、テンプレートの内容を変更します。

ファイルテンプレートのヘッダーガード

リテラル構文で #pragma once を折り返していることに注意してください。 ファイルテンプレートには、CLionが Apache Velocity言語を使用しており、これによりC/C++のプリプロセッサディレクティブを正しく解析するためにエスケープが必要です。

    ヘッダーガードシンボルを設定する

    1. ヘッダーガードシンボル(上の例の MY_HEADER_H )は一意である必要があるため、通常はファイル名に関連しています。 ヘッダーガードシンボルのパターンを設定するには、 設定 | エディター | コードスタイル | C/C++命名規則タブを開き、 ヘッダーガード フィールドにテンプレートを指定してください:

      命名規則設定のヘッダー保護フィールド
    2. 以下のようなさまざまな事前定義変数を使用できます。

      • ${PROJECT_NAME} - 現在のプロジェクトの名前。

      • ${PROJECT_REL_PATH} - 相対ターゲットパスです。 例えば、プロジェクトが prj ディレクトリにあり、ターゲットファイルが prj/src/dir/header.h の場合、 ${PROJECT_REL_PATH} src/dir と等しくなります。

      • ${FILE_NAME} - 拡張子のないターゲットファイル名

      • ${EXT} - ターゲットファイルの拡張子。

      • ファイルテンプレートで使用できる他の変数には、 ${USER}${DATE} などがあります。

      有効なヘッダーガードシンボル 次の文字を含めることができます :大文字の 'A-Z' 小文字の 'a-z' の各文字、アンダースコア記号 _ 、数字(ただし数字で始めることはできません)、およびドル記号 $ が利用できます。 CLion は、数字で始まるシンボルに INC_ 接頭辞を追加し、 INC_${UUID} パターンを使用して無効なシンボルを置き換えます。

    3. 構成されたシンボルは、ヘッダーテンプレートの ${INCLUDE_GUARD} 変数を置き換えます。 CLion は、新しい C/C++ クラスとヘッダーファイルを 作成中 ときにパターンを適用します。 また、クラスやファイルの 名前を変更すると、現在設定されているスタイルに一致するヘッダーガードが新しい名前で更新されます。

      automatic changes in header guard template for file rename
    2026 年 7 月 15 日