静的ライブラリをGCC(基本的にはAVR-GCC)に作成したいと思います。しかし、私はユーザーが変更することを許可する特定のパラメータ。例えば、私はキーパッドインタフェース用のライブラリを作成します。このライブラリでは、ユーザの必要に応じてタイムアウト値と入力キーを異ならせることができます。現在、私は#define値をkeypad.hファイルに入力キーとタイムアウトのために行っています。しかし私が静的ライブラリのために行くとき、入力キーの値は私が間違っていなければ、libaryのコンパイル時に決定されます。したがって、ユーザがkeypad.hのenterキーの値を変更したとしても、それはライブラリによって考慮されません。だから、私はこの関数がグローバルに定義されたエンターキーとタイムアウトの値を設定するinitializeKeypad()関数に行くことを考えました。しかし、私がこれをすると、再入国は失われます。だからオプションは、すべてのユーザーが設定可能なパラメータをinitializeKeypad()関数に渡すことだけです?他のより良い方法?静的ライブラリと再入可能のユーザカスタマイズ
2
A
答えて
3
あなたはあなたのライブラリーのグローバル設定を保持する必要はありません。別のオプションは、ライブラリの設定でstruct
を割り当て、それにopaque handleをユーザーに提供することです:
KeypadHandle khdl = initializeKeypad();
...
char c = keypadRead(khdl);
...
keypadRelease(khdl);
このアプローチの欠点は、ユーザーは、ライブラリを使用している限り、たとえば独自の静的変数に配置するなどして、ハンドルを保持しなければなりません。
関連する問題
- 1. Rails 3 Appのユーザカスタマイズ可能な背景
- 2. 静的ライブラリ内の静的ライブラリ
- 3. 静的ライブラリの静的メンバー
- 4. リンカエラー静的ライブラリと
- 5. 静的ライブラリと動的ライブラリ - more C++ fun
- 6. UNIX:実行可能ファイルを静的ライブラリと動的ライブラリの両方にリンクしていますか?
- 7. 静的ライブラリと実行可能ファイルを単一のインストールで生成する(autoconf)
- 8. Drupalポータル、ホームページにユーザカスタマイズ可能なウィジェットを作成する
- 9. 静的ライブラリのヘッダーファイルの包含と可視性iOS
- 10. 静的ライブラリと定数
- 11. Android NDKと静的ライブラリ
- 12. JavaScriptの再入可能
- 13. アンドロイドビルド静的ライブラリ
- 14. 静的ライブラリ "interface"
- 15. iPhone静的ライブラリ
- 16. 他の静的ライブラリにリンクする静的ライブラリに動的ライブラリをリンクする
- 17. XCodeで静的ライブラリの静的ライブラリを作成する
- 18. 静的ライブラリ、Windowsプラットフォーム上の静的ライブラリについて
- 19. 再利用可能なGlobalBase/HttpApplicationを「抽象静的」にすることは可能ですか?
- 20. 実行可能ファイルに使用される静的ライブラリのリストを取得
- 21. 共有ライブラリと静的ライブラリの技術的な違いは?
- 22. デバッグリンカエラー - SDL静的ライブラリ
- 23. Objective-C静的ライブラリ
- 24. バインディングC++静的ライブラリ
- 25. Visual Studio 2012の静的ライブラリとのリンクエラー
- 26. Android NDK、2つの静的ライブラリとリンク
- 27. Qtサードパーティ製ライブラリとの静的リンク
- 28. 実行可能ファイルから静的にリンクされたライブラリを抽出する
- 29. 静的ライブラリのBoost.Testテスト
- 30. LD:STD Cの静的ライブラリ
しかし、これが最善のアプローチです。 ) –
ライブラリ内では、構造体へのポインタを宣言し、メモリをdunamicallyに割り当て、mallocから返されたポインタを返します。代わりに、部分を呼び出すことで構造体を定義し、構造体へのポインタをライブラリに渡すこともできます。これにより、mallocの使用とメモリリークの可能性が回避されます。これ以上の不透明なハンドルの利点? – Rajesh
私が不透明なハンドルで見る1つの利点は、もしあれば初期値がライブラリ自体の中でより良い方法で処理できることです。 – Rajesh