Arduinoの「error: variable or field 'foo' declared void 」は#includeをまとめて書くと直るかも

Arduinoで別々に書いたスケッチを合わせる時、

単純に#includeとか変数をコピるとエラーになることがある。

確認したのはArduino 1.0.5と1.0.6

 

一番単純な再現コード(/**/が自動挿入される部分)

Arduino IDE inserts forward declaration.ino

 

最初の変数定義の直前に#include "Arduino.h"や関数の前方宣言を挿入するようですが、

includeの順番によっては関数の引数で使っている型(この場合はTwoWire)がその時点で未定義なので、エラーとなる。

 

#includeをまとめて書くことで、前方宣言に不明な型をなくすことができる。

 

C++のつもりで書いているとハマるので注意。

C++が読める人は「環境設定」から「より詳細な情報を表示する」にチェックを入れておくと、Arduinoが書き出すファイルパスなどが出力されるので、謎のエラーを解決しやすくなります。