概要
もうすぐ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++言語標準 |
| .hpp | C++言語専用の拡張子でArduino IDE 1.8.0以降で利用可能 |
| .hh | C++言語専用の拡張子でArduino IDE 1.8.0以降で利用可能 |
| .tpp | テンプレート用の拡張子でArduino CLI 0.19.0以降で利用可能 |
| .ipp | インラインの拡張子でArduino CLI 0.19.0以降で利用可能 |
C言語は.cと.hの組み合わせが標準ですが、C++言語だといろいろな流派があり統一されていません。
| コード規約 | 組み合わせ | 引用元 |
|---|---|---|
| .cc, .h | https://google.github.io/styleguide/cppguide.html#Header_Files | |
| IPA(ESCR C++) | .cpp, .h | https://www.ipa.go.jp/publish/qv6pgp00000010td-att/000055043.pdf |
| Unreal Engine 4 | .cpp, .h | https://docs.unrealengine.com/5.3/ja/epic-cplusplus-coding-standard-for-unreal-engine/ |
| OpenCV | .cpp, .hpp | https://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がペアになりそうですが謎です。



コメント