Arduinoで使えるファイル名と拡張子

概要

もうすぐESP32のボードライブラリが更新されて、C++11からC++23に使えるバージョンがあがります。ついでにいろいろ調べていたら拡張子を何を使えば悩んでいたので調べてみました。

Arduino IDEで利用できるファイル名

Sketch specification - Arduino CLI
Arduino Command Line Interface

上記にフィアル名や拡張子の資料があります。なぜかCLIコマンドの規約をIDEも準拠している感じになっています。以下抜粋です。

フォルダとファイル名

  • アルファベット(A-Zまたはa-z)
  • 数字(0-9)
  • アンダースコア(_)

上記ではじまり、ドット(.)とダッシュ(-)が途中に利用できるそうです。

拡張子

  • .ino – Arduino 言語ファイル
  • .pde – Arduino 言語ファイル(古い形式で非推奨)
  • .cpp – C++ ファイル
  • .c – C ファイル
  • .S – アセンブリ言語ファイル
  • .h、.hpp、.hh – ヘッダーファイル
  • .tpp、.ipp – ヘッダーファイル

上記がサポートされています。基本的には一番基本的なプログラムは.inoファイルに保存して、それ以外のプログラムは.cppを利用します。.cのC言語も利用できますが、あまり利用することはないはずです。

ヘッダファイルの拡張子が微妙でいろいろあります。

拡張子備考
.h標準的なヘッダファイルでC言語、C++言語標準
.hppC++言語専用の拡張子でArduino IDE 1.8.0以降で利用可能
.hhC++言語専用の拡張子でArduino IDE 1.8.0以降で利用可能
.tppテンプレート用の拡張子でArduino CLI 0.19.0以降で利用可能
.ippインラインの拡張子でArduino CLI 0.19.0以降で利用可能

C言語は.cと.hの組み合わせが標準ですが、C++言語だといろいろな流派があり統一されていません。

コード規約組み合わせ引用元
Google.cc, .hhttps://google.github.io/styleguide/cppguide.html#Header_Files
IPA(ESCR C++).cpp, .hhttps://www.ipa.go.jp/publish/qv6pgp00000010td-att/000055043.pdf
Unreal Engine 4.cpp, .hhttps://docs.unrealengine.com/5.3/ja/epic-cplusplus-coding-standard-for-unreal-engine/
OpenCV.cpp, .hpphttps://github.com/opencv/opencv/wiki/Coding_Style_Guide#files

.cppと.hppが多かったと思いましたが、.cppと.hが無難かもしれません。そしてGoogleの.ccはArduino IDEだとサポートしていないですね。

まとめ

拡張子を.hにするか.hppにするかは好みの差だと思います。ちなみに.C(大文字)、.cc、.cpp、.cxx、.c++あたりがC++言語としてはよく使われていると思います。

ヘッダファイルだと.h、.hpp、.hh、.hxx、.h++、.incなどでしょうか。Googleスタイルの.ccだと.hhがペアになりそうですが謎です。

コメント