💻 Arduino IDEにおける #include の使い方と注意点

マイコン開発

#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. インクルードの順序

コードの可読性維持のため、インクルードは一般的に以下の順序で記述することが推奨されます。

  1. Arduino標準ヘッダー(例: <Arduino.h> – ほとんどのスケッチでは不要)
  2. 標準ライブラリ(例: <Wire.h>, <SPI.h>
  3. 自作のローカルヘッダー(例: "MyFunctions.h"

2.3. コンパイル時間の増加

#includeは、ファイルの内容を物理的にスケッチにコピーするのと同じ効果を持ちます。不要なファイルをインクルードすると、コンパイル時間が不必要に増加します。必要な機能を持つファイルだけを厳選してインクルードしましょう。


🛠️ まとめ

項目<ライブラリ名.h>“ヘッダー名.h”
用途標準・外部インストール済みライブラリスケッチフォルダ内の自作ファイル
最重要注意点必要なものだけ含めるインクルードガードを必ず使用する

#includeを正しく使いこなすことで、複雑なハードウェアを扱うためのライブラリ機能を活用し、効率的にArduinoプログラミングを行ってうことができます。