Arduino-Pico開発環境にした時のnamespace Arduino

Raspberry Pi PicoをArduino IDEで開発した時に、ちょっと感動したことがあった。
mbed側ポーティングにはきちんと名前空間の定義があった。

Arduino IDEで用意されている標準ライブラリや一部ユーザー作成のライブラリには、名前空間が全く利用されていないのが、C++プログラムをやっていた自分としてはとても気になっていた。
STLはstd、boostはboostなど、自前の名前空間内に定義されているのを見ていたため、Arduinoがなぜarduinoという名前空間内の定義をしていなかったのか不思議に思っていた。

自分用のクラスを作る場合は、専用の名前空間に入れておくので、名前の競合などはめったにおきはしないのだが、気になるものは気になる。

今回、Raspberry Pi PicoをArduino IDEで開発するにあたり、その開発環境をダウンロードしてみてみたら、標準クラスなどざっと見たところ大体Arduinoという名前空間内に定義されているのが見て取れた。

例えばSPI用のものだと、以下の様な感じになっている。

ただ、これだと既存のinoファイルをpico用に移植しようとするとたぶんエラーが出まくるので、Arduino.h内に、using namespace arduino;というのが記述されて、移植性は損なわないようになっているようだ。

githubを見る限り、この対応かなり前から入っているようだった。

ヘッダーファイル内にusing namespaceが入っているのはいただけないが、しょうがないのかな。

コメント

タイトルとURLをコピーしました