Arduinoのライブラリを作成するときに知っておくべきことは何ですか?


8

現在の問題を超えて、「Arduinoのライブラリを作成するときに何を知っておくべきですか?」

まず、私がしていること:

私はEclipseをエディターとして使用し、C ++でコードを作成しています。ヘッダーファイルを含む簡単なArduinoアプリケーションを作成し、エラーに対処しています。

最初の問題:「ビルドクリーン」を実行するにはどうすればよいですか?ヘッダーファイルがキャッシュされたかのように、修正したと思われるエラーが表示されます。(はい、私は愚かなことをしている可能性が非常に高いです(編集:私はそうでした)が、ライブラリをクリーンアップする方法を知りたいのですが、オブジェクトファイルの場所がわかりません)。

第二に、どのような規則に注意する必要がありますか?私はArduinoを好きなだけ使用していません。C++でプログラミングするのはとても気持ちがいいですが、ライブラリの目的は、ユーザーにとって物事をシンプルに保つことです。関数名の規則はありますか?定数を作成していますか(グローバル名前空間が#definesで汚染されているようです)?等々。

最後に、他に知っておくべきことはありますか?

私はArduinoライブラリチュートリアルを見てきましたが、これは良いですが、それほど遠くはありません。また、システムにインストールされているライブラリのいくつかをのぞいてみました。


1
Arduino IDEを試してあきらめましたか?私はEclipse-as-IDEの一般的なプログラマー生産性機能セットを考えると、Arduino-IDEは目立たないことを知っています。ただし、この状況では、Arduino-IDEをまだ試していない場合は、試してみてください。私はそれが遅いと思いますが、彼らがそうであるように、明示的な再コンパイルはうまくいきます。
icarus74

回答:


3

刺します。私はArduinoのコードを書いていませんが、CおよびC ++プログラミングの多くを行ってきました。私が実際にあなたのエラーを見た場合、それは助けになるでしょうが、それにもかかわらず。

CコードでC ++を使用するときに常に覚えておく必要がある主なことは、CコードをC ++コードにリンクできるようにするには、C ++コードに "extern" C ""で宣言された関数が必要であることです。「extern "C"」は、Cファイルにリンク可能なコードを作成している、またはCファイルのコードを使用していることをC ++コンパイラに通知するものです。したがって、ライブラリAPIヘッダー内のすべての関数は、「extern "C" void dosomething()」のように定義されたソースファイル内の関数と相関する必要があります。C ++でクラスを使用しようとしている場合は、Cコードでクラスを呼び出せないことに注意してください。オブジェクトにアクセスするには、関数(外部 "C")を作成する必要があります。CコードがC ++コンパイラでコンパイルされている場合は、「extern "C"」について心配する必要はありません。

C ++コード内でCコードを呼び出す場合は、次のような構成でCヘッダーをラップする必要があります。

#ifdef ___cplusplus
extern "C" {
#endif

///all my C function declarations... yada yada

#ifdef __cplusplus
}  //end extern "C"
#endif

C ++で作業している場合は、「DEBUG」や「VERSION2」などのコンパイル時フラグを作成して特別なコードセットを作成する場合を除き、#definesをあまり使用しないでください。それ以外の場合は、安全な型チェックのための数値定義に「const int / char / float」を使用してください。コンパイラーは通常、これらを最適化するのに十分なほどスマートなので、ROM /コード空間に巻き込まれます(依存します)。また、マクロを作成せず、インライン関数を使用します。また、C ++で多数のマクロと数値定義を使用するなど、愚かである場合は、プログラミング時に常に規則に従う必要はありません。C99バージョンのCにも同じことが当てはまり、インライン関数やC ++のconstなどが追加されました。業界では、プリプロセッサ言語の使いすぎが原因で、バグが多くコードの保守が困難であることを認識しています。

Eclipseは通常、objファイルをプロジェクトの下のディレクトリに保存します。「デバッグ」ビルドを実行している場合は、プロジェクトフォルダーの下の「デバッグ」フォルダーの下にあります。「リリース」ビルドを実行している場合は、「リリース」などを確認します。通常、クリーンビルドはEclipseで動作するので、セットアップの何が問題なのかわかりません。プリコンパイル済みヘッダーを作成していないことを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.