この回答ではhttps://stackoverflow.com/a/4193698/738811と書かれていますが、「デフォルトではインライン関数には外部リンケージがあります」と書かれています。しかし、デフォルトでは、インラインであるものとリンクすることは不可能です。インライン関数に外部リンケージがあると言うのはどういう意味ですか?インライン関数と外部リンケージ
5
A
答えて
5
名前のリンケージは、名前が特定のオブジェクトや関数を参照するために使用される場所とまったく同じように、定義されている場所や方法とは関係ありません。
関数をインラインで宣言しても、強制的にインライン化されるわけではありません。 1つの定義ルールをリラックスして、使用されている各翻訳単位で定義できるようにします(呼び出される各翻訳単位で1つずつ定義する必要があります)。コンパイラが特定の呼び出しをインライン化しないことを決定した場合、またはそのアドレスを使用する場合、インラインでないバージョンが生成されるのを防ぎません。
"外部リンケージ"と "インライン"は排他的ではありません。 「外部リンケージ」とは、任意の翻訳単位で機能を参照できることを意味し、「インライン」とは、それを呼び出す翻訳単位で定義する必要があることを意味します。
0
「リンケージが必要な場合は外部になります」と表現する方がいいかもしれません。つまり、インライン関数のアドレスを取ると、そのアドレスは外部から見えます(モジュールには静的ではありません)。
0
インライン関数はインライン展開されている必要はありません。そうでないときは、言語定義では関数のコピーが1つだけ必要です。
0
インライン関数は、通常、他のコンパイル単位からリンク可能です。インライン関数としては表示されません。コンパイルされたファイルに関数のコピーがあります。これはフリーのインライン関数に適用されます。クラスメンバ関数は、通常、 "非インライン"使用のための関数のコピーを取得しません。よいリンカは、コードが再利用されない場合、コードを「デッドコード」として削除します。
関連する問題
- 1. なぜインライン関数はデフォルトで外部リンケージを持っていますか?
- 2. インライン関数のリンケージの変更
- 3. Cのインライン関数と "未定義の外部"エラー
- 4. インライン外部SVG
- 5. jQueryとインライン&外部CSS
- 6. C++例外、GCCと "インライン関数"フラグ
- 7. インライン関数は外部条件を避けますか?
- 8. 外部ファイルへのインラインJavaScript関数の移動とjQueryへの変換
- 9. 外部HITとmturkのインラインHIT
- 10. インラインHTMLと外部CSSの効率/ベストプラクティス
- 11. インライン関数と静的インライン関数の違い
- 12. インライン関数と型エクステンション
- 13. 外部スクリプトからインラインJavaScript関数を呼び出せません
- 14. 行 - インライン関数
- 15. インライン関数/メソッド
- 16. インライン関数コールエラー
- 17. インライン関数リンカエラー
- 18. 匿名名前空間内の関数/オブジェクトに外部リンケージがあるのはなぜですか?
- 19. Ruby/Nokogiri XSLT変換と外部関数
- 20. タイプチェックとコンパイルエラーのTypescript外部関数
- 21. 静的関数のextern宣言は内部リンケージを中断しますか?
- 22. Railsクエリの外部関数
- 23. addEventListenerを外部関数
- 24. 私フィドル外部関数
- 25. jQueryプラグイン外部関数
- 26. SQL外部結合関数
- 27. Jquery ajax外部コールバック関数
- 28. 組込みシステムのインライン、インライン、外部の違いは?
- 29. javascriptと同じ関数名(入れ子関数と外部関数)
- 30. jQueryプラグイン - インラインCSSまたは外部スタイルシート?