Я вижу/Gy опцию, и задаюсь вопросом, почему я использовал бы ее? http://msdn.microsoft.com/en-us/library/xsa71f43.aspx
принятый в настоящее время ответ в некоторой степени неполон.
Назначение раздела COMDAT - дать возможность определять «повторяющиеся» разделы в нескольких объектных файлах. Обычно, если один и тот же символ определен в нескольких объектных файлах, компоновщик сообщает об ошибках. Это может вызвать проблемы для некоторых функций языка C ++, таких как шаблоны, которые могут создавать экземпляры одних и тех же символов в разных файлах cpp.
Разделы COMDAT используются, чтобы обойти это. Когда раздел в объектном файле помечен как COMDAT, он также указывает флаг, указывающий, как следует разрешать конфликты. Есть несколько вариантов, в том числе «просто выберите любого, кто вам нравится», «убедитесь, что все дубли. Имеют одинаковый размер», «убедитесь, что все дубли. Имеют одинаковый контент», «выберите самый большой» и т. Д. спецификации COFF для получения полного списка.
В любом случае, в отличие от принятого в настоящее время ответа , нет никаких требований, так или иначе, о том, каким должно быть содержимое раздела COMDAT. Они могут содержать одну процедуру, несколько процедур, данных или любую комбинацию кода и данных.