lib.aという静的ライブラリを使用するいくつかのソースコードをコンパイルすると、lib.aのインライン関数は残りのバイナリと正しくインライン展開されますか?gcc静的リンカーは、静的ライブラリから関数を正しくインライン化できますか?
0
A
答えて
0
いいえ、そうではありません。インライン化は、構文解析ツリーの操作であり、インラインコードのホストソースとドナーソースの両方にソースコードへのアクセスが必要です。
静的ライブラリは、使用する時点でソースからバイナリにコンパイルされているため、インライン展開はできません。インライン化されていないが
、コードも「適切」であると(それがすべてで静的ライブラリにコンパイルしてしまったと仮定すると)うまく機能します。
0
まあ、インライン関数を呼び出すことさえしようとしても、その宣言はコールサイトで見ることができなければなりません。それがinline
の場合、コンパイラはインライン化するか、要求を完全に無視します。
最終的な製品にリンクするときに、ライブラリでインライン化されたインライン宣言されていない関数がインライン展開されているのではないかと疑問に思うなら...これは実装に依存し、それをライブラリにしたので)、それを再びインライン化できるかもしれません。どこにでもインライン展開されていても、実装には定義が含まれるようにする必要がありますが、すべては実装に依存します。
http://crazyeddiecpp.blogspot.com/2010/12/inline-functions-and-you.html
関連する問題
- 1. 静的メンバー関数をインライン化できますか?
- 2. 静的インライン関数はスレッドセーフですか?
- 3. Objective-Cで静的クラスメソッドをインライン化できますか?
- 4. 静的ライブラリのシム関数
- 5. Cコンパイラの最適化(gcc):自動的に静的でない関数をインライン化する
- 6. gccは静的変数を自動的に0に初期化しますか?
- 7. インライン関数の静的変数
- 8. クラスの静的関数は、グローバル静的変数にアクセスできますか?
- 9. 静的メソッドから静的関数ポインタを呼び出す
- 10. GCC/Linux:.soに静的ライブラリを追加していますか?
- 11. ヘッダファイル内の静的インライン関数
- 12. 静的ライブラリgcc - ライブラリが見つかりません
- 13. 静的ライブラリの静的メンバー
- 14. 共有オブジェクト内の静的ライブラリの静的関数
- 15. インライン関数と静的インライン関数の違い
- 16. 静的メンバー関数から非静的メンバー関数を呼び出す方法
- 17. 静的ライブラリ内の静的ライブラリ
- 18. 静的関数から非静的フィールドにアクセス
- 19. C#で静的関数内で非静的関数を呼び出すことはできますか?
- 20. 非静的メソッドは**静的コンテキスト**から参照できません。静的コンテンツとは何ですか?
- 21. 非静的メンバー関数は静的メンバー関数またはデータにアクセスできますか?
- 22. -gccの静的オプション?
- 23. 非静的メンバーの静的メンバー関数
- 24. 静的関数内の非静的パラメータ
- 25. XCodeで静的ライブラリの静的ライブラリを作成する
- 26. 静的メンバー関数は暗黙的にインライン化されたクラス内で定義されていますか?
- 27. 静的変数をインライン関数で公開する
- 28. 静的ライブラリの未定義関数
- 29. 静的ライブラリからself.viewにアクセスする
- 30. 静的クラス関数内で静的変数をインクリメントできません
こんにちはアレックス、これは私の疑いです。あなたの主張に言及してください。一般に、この情報をどこで調べるべきですか? – Andrew
珍しい場合を除き、否定的な主張を支持するための参照を求めるのは妥当ではありません。 – Yttrill
http://crazyeddiecpp.blogspot.com/2010/12/inline-functions-and-you.html –