ばかおもちゃ本店:Youtube twitter:@sashimizakana Amazon.co.jpアソシエイト

2016年6月20日月曜日

Arduinoで構造体を使う

Arduinoで構造体を使う方法、ということで調べると、普通に使うなら別に問題なく使えるが、関数の戻り値や引数としてはヘッダファイルがないとダメだ、というような話が出てくる。しかしこれは少し間違いがあり、現在の最新Ver(16/6/20現在で1.6.9)を使っている限りは、何も考えずに構造体を宣言してC++のように型名と同じくそのまま利用すれば、何の問題も起きない。

ただ少し前のVerでは、戻り値や引数の場合のみ、コンパイルが通らないという、バグか、あるいはC++への対応レベルの問題があり(もともとArduinoはC++のすべての機能を使ええるわけではないとリファレンスなどには書かれている)、先に関数の宣言を書いたりしないとうまくいかない。

ちなみにヘッダファイルを使わなくとも、ワンファイルで解決する方法として単純にC言語と同じように書くという方法がある。
struct RGB hoge(struct RGB rgb){
という感じだ。C言語の文法通り、構造体の利用時は構造体名の前にstructをつけるというルールに従いさえすれば、問題なく通る。