ヘッダーガード
ヘッダーガード(英語)は、ヘッダーが複数回インクルードされるのを防ぐプリプロセッサーディレクティブのパターンです。 ヘッダーガードは、コードの内容全体を #ifndef (#if !defined などの)ブロックにラップします。
ヘッダーファイルテンプレートを編集する
デフォルトで、ヘッダーガードは新しいヘッダーの初期内容を指定する ファイルテンプレートに含まれています。 たとえば、ヘッダーガードの代わりに #pragma once(英語) を使用することにした場合は、これらのテンプレートを編集できます。 これについては、 に移動し、 ファイル タブを開いてください。 リストから C ヘッダーファイル または C++ クラスヘッダーファイル を選択し、テンプレートの内容を変更します。

リテラル構文で #pragma once を折り返していることに注意してください。 ファイルテンプレートには、CLionが Apache Velocity言語を使用しており、これによりC/C++のプリプロセッサディレクティブを正しく解析するためにエスケープが必要です。
ヘッダーガードシンボルを設定する
ヘッダーガードシンボル(上の例の
MY_HEADER_H)は一意である必要があるため、通常はファイル名に関連しています。 ヘッダーガードシンボルのパターンを設定するには、 の 命名規則タブを開き、 ヘッダーガード フィールドにテンプレートを指定してください:
以下のようなさまざまな事前定義変数を使用できます。
${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}パターンを使用して無効なシンボルを置き換えます。構成されたシンボルは、ヘッダーテンプレートの
${INCLUDE_GUARD}変数を置き換えます。 CLion は、新しい C/C++ クラスとヘッダーファイルを 作成中 ときにパターンを適用します。 また、クラスやファイルの 名前を変更すると、現在設定されているスタイルに一致するヘッダーガードが新しい名前で更新されます。