/Gy 옵션을보고 왜 내가 사용하는지 궁금합니다. http://msdn.microsoft.com/en-us/library/xsa71f43.aspxCOMDAT 섹션은 무엇을 위해 사용됩니까?
답변
currently accepted answer은 다소 불완전합니다.
COMDAT 섹션의 목적은 "중복"섹션을 여러 개체 파일에 정의 할 수있게하는 것입니다. 일반적으로 동일한 심볼이 여러 객체 파일에 정의되어 있으면 링커에서 오류를보고합니다. 이로 인해 템플릿과 같은 일부 C++ 언어 기능에서 다른 cpp 파일의 동일한 기호를 인스턴스화 할 수있는 문제가 발생할 수 있습니다.
COMDAT 섹션은이 문제를 해결하는 데 사용됩니다. 섹션이 오브젝트 파일에서 COMDAT로 표시되면 충돌을 해결하는 방법을 나타내는 플래그도 지정합니다. "당신이 좋아하는 사람을 선택하십시오", "모든 사람들이 같은 크기인지 확인하십시오.", "모든 사람들이 똑같은 내용을 가지고 있는지 확인하십시오.", "가장 큰 것을 선택하십시오."등 여러 가지 옵션이 있습니다. 완전한 목록을위한 COFF spec.
어떤 경우 든 currently accepted answer과 달리, COMDAT 섹션의 내용이 무엇인지에 대한 요구 사항은 없습니다. 하나의 프로 시저, 많은 프로 시저, 데이터 또는 코드와 데이터의 조합을 포함 할 수 있습니다.
/Gy 옵션은 릴리스 빌드에 사용하는 것이 좋습니다. 왜냐하면 모든 함수가 자신의 섹션을 가지고 있기 때문에 링커는 사용되지 않는 모든 코드를 삭제할 수 있습니다. /Gy 옵션을 지정하지 않으면 다음과 같이 표시됩니다. "a.cpp"는 3 개의 함수를 정의하고 컴파일러는 컴파일 할 때 컴파일러를 하나의 코드 섹션에 넣습니다. "main.cpp"는 "a.cpp"의 함수 하나만 사용하지만 "a.cpp"의 모든 함수를 링크 할 때 (두 개는 부담으로 연결됩니다). 그리고 모든 함수가 자신의 섹션을 가지고 있다면 링커는 "main.cpp"에 필요한 함수를 포함하는 함수 하나만 선택할 수 있습니다. /Gy 옵션없이 컴파일하는 것은 디버그 빌드에 적합합니다. 클래스를 컴파일 할 때 클래스의 메소드는 모두 기본적으로 자체 섹션을 가져옵니다.
이것은 오래되었지만 누구에게나 정보입니다. 링커가 작동하는 방식이 아닙니다. 참조되지 않은 함수를 제어하는 완전히 다른 스위치가 있습니다 :/OPT : REF (최적화 -> 참조 : 예). 동일한 기능,/OPT : ICF를 병합하는 또 다른 기능이 있습니다. ICF는/Gy에서만 작동하지만 REF는/Gy와 함께 작동하거나 작동하지 않습니다. – SilverbackNet
- 1. sys/user.h는 무엇을 위해 사용됩니까?
- 2. "this"는 무엇을 위해 사용됩니까?
- 3. AlwaysEnableSilent 속성은 무엇을 위해 사용됩니까?
- 4. HL7 ZDS 세그먼트는 무엇을 위해 사용됩니까?
- 5. selenium.windowfocus()이 명령은 무엇을 위해 사용됩니까?
- 6. C# 클래스 프로젝트에서 AssemblyCulture는 무엇을 위해 사용됩니까?
- 7. 활성 디렉토리에서 mailNickname은 무엇을 위해 사용됩니까?
- 8. Edje의 Swallow 위젯은 무엇을 위해 사용됩니까?
- 9. NSActor는 어떻게 작동하며 NSActor는 무엇을 위해 사용됩니까?
- 10. OpenCV에서 CvMatND 구조체는 무엇을 위해 사용됩니까?
- 11. Gnu 어셈블러 (GAS)의 CFI 지시문은 무엇을 위해 사용됩니까?
- 12. 스프링 보안 : UserDetailsManager 인터페이스는 무엇을 위해 사용됩니까? 그리고 더!
- 13. cfloginuser가 암호 속성을 요구하는 이유는 무엇입니까? 그것은 무엇을 위해 사용됩니까?
- 14. 중요한 섹션은 무엇입니까?
- 15. Javascript의 섹션은 무엇입니까? - wwOpenInstalled
- 16. 중요 섹션은 항상 빠릅니까?
- 17. 이미지의 bss 섹션은 무엇입니까?
- 18. 스레딩에서 중요한 섹션은 무엇입니까?
- 19. Clojure는 무엇을 위해 유용합니까?
- 20. MyAssembly.XmlSerializers.dll은 무엇을 위해 생성됩니까?
- 21. 미래 응답을 예측하기 위해 어떤 가중치가 사용됩니까?
- 22. .gitconfig의 [github] 섹션은 어떻게 작동합니까?
- 23. PowerShell 개발을 위해 무엇을 사용합니까?
- 24. 을 위해 무엇을 (;;) C#을
- 25. 내 SqlDataReader 코드를 배치해야하는 섹션은 무엇입니까?
- 26. 여기서 stringWithFormat은 어떻게 사용됩니까?
- 27. IB Xcode 4의 Inspector Notes 섹션은 무엇입니까
- 28. 초기화되지 않은 글로벌 데이터 섹션은 무엇입니까?
- 29. Flash VM은 드로잉을 위해 후드에서 무엇을 사용합니까?
- 30. Silverlight 응용 프로그램을 테스트하기 위해 무엇을 사용합니까?
[Function-LeveL Linking (VC++에서/Gy 스위치) - 가능한 무엇입니까?] (http://stackoverflow.com/questions/629894/function-level-linking-gy-switch-in) -vc-what-is-it-good-for) –