私はAVR MCU用のスタティックライブラリを作成しています。私はavr-gccとAVR Libcを使用しています。ライブラリ関数の中には、SPIを使用してデバイスと通信するものがあります。ただし、SPI通信はすべてのAVR MCUで同じ方法で行われるわけではありません(すべてのAVR MCUで同じレジスタが使用されているわけではありません)。それはビッグバンギングによってさえできます。したがって、私はユーザーにSPIルーチンを提供することを望んでいます。ユーザが自分のライブラリ内で独自の機能を提供できるようにするにはどうすればよいですか?
どうすればいいですか?すべてのライブラリ関数が追加の引数としてコールバック関数を受け取るべきですか? SPIハンドラとして機能するライブラリ内のグローバル変数を持つべきですか?私は関数を外部にする必要があります(extern
を使用)?
はシンプルで簡単な解決策は、単に適切な名前のextern関数を宣言することで、
コンパイル時に選択する必要がありますか(たとえば、特定のSPIライブラリにリンクできますか)、実行時にリンクされているライブラリの中から選択する必要がありますか? – payne
コンパイル時。 – eepp