私は/ Gyオプションを参照して、なぜ私はそれを使用するのだろうかと思っていますか? http://msdn.microsoft.com/en-us/library/xsa71f43.aspxCOMDATセクションとは何ですか?
答えて
currently accepted answerはやや不完全です。
COMDATセクションの目的は、複数のオブジェクトファイルで "重複"セクションを定義できるようにすることです。通常、複数のオブジェクトファイルで同じシンボルが定義されている場合、リンカはエラーを報告します。これはテンプレートのようないくつかのC++言語機能では、異なるcppファイルに同じシンボルをインスタンス化する問題を引き起こす可能性があります。
これを回避するためにCOMDATセクションが使用されています。セクションがオブジェクトファイル内のCOMDATとしてマークされている場合は、競合の解決方法を示すフラグも指定されます。 「あなたが好きな人を選んでください」、「すべてのdupsが同じサイズであることを確認してください」、「すべてのdupsが同じ内容であることを確認してください」、「最大のものを選んでください」などの多数のオプションがあります。完全なリストのためのCOFF仕様。
いずれにしても、currently accepted answerとは異なり、COMDATセクションの内容には何らかの要件がありません。 1つのプロシージャ、多くのプロシージャ、データ、またはコードとデータの組み合わせを含むことができます。
/Gyオプションは、リリースビルドで使用するのに適しています。 'すべての関数がそれ自身のセクションを持っているため、リンカは未使用のコードをすべて削除することができます。 /Gyオプションを指定しないと、次のような結果になります。 「a.cpp」は3つの関数を定義し、コンパイラはコンパイル時に1つのコードセクションにそれらを置きます。 "main.cpp"は "a.cpp"の関数を1つだけ使用しますが、 "a.cpp"のすべての関数をリンクするとリンクされます(そのうち2つは負担です)。また、すべての関数にセクションがある場合、リンカーは "main.cpp"に必要な関数を含むものを1つだけ取り出すことができます。 /Gyオプションなしでコンパイルすると、デバッグビルドに適しています。 クラスをコンパイルするとき、そのクラスのすべてのメソッドは、デフォルトで独自のセクションを取得します。
これは古いですが、だれかの情報のために:それはリンカの仕組みではありません。参照されていない関数を制御する全く異なるスイッチがあります:/ OPT:REF(最適化 - >参照:はい)。同じ機能、/ OPT:ICFをマージする別の権利があります。 ICFは/ Gyのみで動作しますが、REFは/ Gyと共に動作します。 – SilverbackNet
- 1. ApplicationSettingsセクションとAppSettingsセクションの違いは何ですか?
- 2. ヘッダーファイルの@interfaceセクションは何ですか?
- 3. セクションHTML5でのタグと同じセクションの違いは何
- 4. オブジェクトファイルのコンテキスト内のLLVM仮想セクションとは何ですか?
- 5. SwiftのNSIndexPathの行とセクションの違いは何ですか?
- 6. .gotと.got.pltセクションの違いは何ですか?
- 7. {}は、Binding構文のStringFormatセクションで何を意味しますか?
- 8. HTML5 appcache:NETWORK:セクションは本当に何ですか?
- 9. _attribute(セクション(「NC_BSS」)...これの意味は何ですか?
- 10. Elf-fileの ".group"セクションの任命は何ですか?
- 11. package.jsonのscriptsセクションの目的は何ですか?
- 12. HTMLのセクション間のスペースは何ですか?
- 13. オブジェクトファイルの.bssセクションの必要性は何ですか?
- 14. MASMアセンブリの「機能レベルのリンク」(つまりCOMDAT生成)ですか?
- 15. スクロールは、セクションからセクション
- 16. QtのMOCで生成された.cppファイルのセクションは何ですか?
- 17. 実装セクションのユニットにuse節を追加する利点は何ですか?
- 18. web.configのSystem.webServerセクションとSystem.webセクション
- 19. Apple Devセンターの「証明書、識別子、プロファイル」セクションの「キー」とは何か
- 20. この特定のhtmlセクションに適切なxpathクエリは何ですか?
- 21. Xcodeの[情報]タブの[URLタイプ]セクションの役割は何ですか?
- 22. PEローダーによってロードされないセクションは何ですか?
- 23. マルチパートMIME形式のクラウド-initセクションの正しいマージタイプは何ですか?
- 24. UITableViewControllerでセクションを実装する2つの異なる方法の長所と短所は何ですか?
- 25. はmy.confの自分の[セクション]ですか?
- 26. アセンブリで.dataセクションと.textセクションを定義する必要があるのはなぜですか?
- 27. トランスフォームとは何か、トランスフォームとは何ですか?
- 28. omp parallelセクションのスレッドをセクションで分割しないのはなぜですか?
- 29. jobConfクラスとは何ですか?それは何ですか?
- 30. @privateとは何ですか?その用途は何ですか?
[Function-LeveL Linking(VC++の/ Gyスイッチ) - それは何のために良い?](http://stackoverflow.com/questions/629894/function-level-linking-gy-switch-in) -vc-what-it-it-good-for) –