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