Для чего используется Раздел общих данных?

Я вижу/Gy опцию, и задаюсь вопросом, почему я использовал бы ее? http://msdn.microsoft.com/en-us/library/xsa71f43.aspx

29
задан Don Wakefield 2 December 2009 в 17:53
поделиться

1 ответ

принятый в настоящее время ответ в некоторой степени неполон.

Назначение раздела COMDAT - дать возможность определять «повторяющиеся» разделы в нескольких объектных файлах. Обычно, если один и тот же символ определен в нескольких объектных файлах, компоновщик сообщает об ошибках. Это может вызвать проблемы для некоторых функций языка C ++, таких как шаблоны, которые могут создавать экземпляры одних и тех же символов в разных файлах cpp.

Разделы COMDAT используются, чтобы обойти это. Когда раздел в объектном файле помечен как COMDAT, он также указывает флаг, указывающий, как следует разрешать конфликты. Есть несколько вариантов, в том числе «просто выберите любого, кто вам нравится», «убедитесь, что все дубли. Имеют одинаковый размер», «убедитесь, что все дубли. Имеют одинаковый контент», «выберите самый большой» и т. Д. спецификации COFF для получения полного списка.

В любом случае, в отличие от принятого в настоящее время ответа , нет никаких требований, так или иначе, о том, каким должно быть содержимое раздела COMDAT. Они могут содержать одну процедуру, несколько процедур, данных или любую комбинацию кода и данных.

83
ответ дан 28 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: