私は組み込みプロジェクトで作業していますが、私の質問は一般的なベストプラクティスの詳細です。ライブラリをコンパイルするためにextern宣言された変数を定義する場所
私は、マイクロコントローラ上でペリフェラルを動作させるソースファイルを作成しています。ヘッダファイルでは、正しく動作するために必要な2つのバッファが宣言されています。それらはISR内部動作するようになっているので、コンテキストのビットについて
extern volatile struct my_buffer peripheral_Tx_Buffer;
extern volatile struct my_buffer peripheral_Rx_Buffer;
彼らはvolatile
あり、struct my_buffer
アレイ、読み書きヘッドからなる単純な円形のバッファです。
今のところすべてが大丈夫ですが、私はライブラリにコンパイルして、すべてを公開することなく他の人にソースコードを与えることができます。さて、これはこれまでに書かれた最も巧妙なコードや革命的なコードではありませんが、私は自分自身にあるものを保つことを好みます。とにかく、それはポイントではありません!
私が知りたいことは、2つのバッファを定義することです。それらはグローバルであるため、ユーザーはperipheral_Rx_Buffer
に格納された着信データを処理し、peripheral_Tx_Buffer
を介して周辺機器に書き込むことができます。
ライブラリーが他のプロジェクトに使用されるたびに定義する義務は、最終的なユーザー(将来の私かもしれません)にパブリックヘッダーで宣言されているためです。例えば、プログラムのメイン部分、すなわちmain()
が存在する場所にそれらを定義する。
pheripheral.c
でライブラリをコンパイルすると、ライブラリが実際に存在することがわかります(エラーの可能性のあるソースを削除します)。
私は何をするべきですか?どのようなドキュメントですか?