#includeは、プログラムに他のファイル(通常はライブラリやヘッダーファイル)のコードを含めるために使用されるプリプロセッサディレクティブです。
1.構文の種類と検索パス
主な構文は2種類あり、検索されるファイルの場所(パス)が異なります。
| 構文 | 用途 | 検索パス |
#include <ファイル名> | システムライブラリ | 標準のArduinoライブラリや、IDEのインストールディレクトリにある**libraries**フォルダ内を検索します。 |
#include "ファイル名" | ローカルヘッダー | プロジェクトの**現在のスケッチフォルダ**を最初に検索し、その後、標準ライブラリのパスを検索します。 |
⚠️2. 主な注意点とベストプラクティス
2.1. ヘッダーファイルの重複インクルード防止(インクルードガード)
同じヘッダーファイルが複数回インクルードされると、クラスや関数の再定義エラーが発生します。これを防ぐために、自作のヘッダーファイル(.h)には必ずインクルードガードを記述します。
インクルードガードの記述例(MyHeader.hの場合)
C++
#ifndef MYHEADER_H
#define MYHEADER_H
// ここにヘッダーファイルの内容(クラス定義、関数プロトタイプなど)を記述
#endif
💡 ポイント:
#ifndefと#defineで使われる名前(例:MYHEADER_H)は、プロジェクト内で一意である必要があります。
2.2. インクルードの順序
コードの可読性維持のため、インクルードは一般的に以下の順序で記述することが推奨されます。
- Arduino標準ヘッダー(例:
<Arduino.h>– ほとんどのスケッチでは不要) - 標準ライブラリ(例:
<Wire.h>,<SPI.h>) - 自作のローカルヘッダー(例:
"MyFunctions.h")
2.3. コンパイル時間の増加
#includeは、ファイルの内容を物理的にスケッチにコピーするのと同じ効果を持ちます。不要なファイルをインクルードすると、コンパイル時間が不必要に増加します。必要な機能を持つファイルだけを厳選してインクルードしましょう。
🛠️ まとめ
| 項目 | <ライブラリ名.h> | “ヘッダー名.h” |
| 用途 | 標準・外部インストール済みライブラリ | スケッチフォルダ内の自作ファイル |
| 最重要注意点 | 必要なものだけ含める | インクルードガードを必ず使用する |
#includeを正しく使いこなすことで、複雑なハードウェアを扱うためのライブラリ機能を活用し、効率的にArduinoプログラミングを行ってうことができます。

最近のコメント