Arduino IDEでプログラミング。ライブラリの作成方法を調べている。以前はとりあえずプログラム本体と分けられればいいや、ということでヘッダファイル(.h)に実装までしていたのだけど、さすがにこれはまずいかなあ、と思い。
いろいろ見ながら、定義と実装でファイルを分けることの利点などをあらためて勉強。完全に理解したとは言い難いのだけど、公開を考えればやっといた方がよさそう、とか。
あと、分割すれば最終的なバイナリのファイルサイズが小さくできる、という記述も発見。ほんとに? ということで試してみた。Arduino IDEでのコンパイル後のメッセージと、最終的なバイナリのサイズ(エクスプローラでの表示)。
●分割前
最大1310720バイトのフラッシュメモリのうち、スケッチが290771バイト(22%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が17860バイト(5%)を使っていて、ローカル変数で309820バイト使うことができます。
サイズ:284 KB (290,880 バイト)
●分割後
最大1310720バイトのフラッシュメモリのうち、スケッチが290847バイト(22%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が17396バイト(5%)を使っていて、ローカル変数で310284バイト使うことができます
サイズ: 284 KB (290,960 バイト)
小さめのプログラム、ライブラリなので差はほんの少し。分割後の方が80バイト大きい。あれ?
まあいいや。とりあえず、書き方がある程度わかったので作業を進めようと思う。
とりあえず、調べている最中に気になったもの、役に立ったものをリンク。
C++ デフォルト引数はプロトタイプ宣言だけにする default argument given for parameter
デフォルト引数はヘッダにのみ書かないとエラー。途中で両方に書いていたので削除した。
Arduinoのオブジェクト指向プログラミング
書き方の基本など。ヘッダフィアルの最後(endifの前)に「;」つけるとかも。
Arduinoの自作ライブラリを作成するには?
examples作成からGitHubへのpushまで。
charで定義される変数の文字数を調べようとしたのだけどsizeofではうまくいかない。それでは配列サイズではなくポインタのサイズを取得する。代わりにstrlenを使う。いまだにこのcharがわからない。
コメント