Подтвердить что ты не робот

Связь с функциональным уровнем (/Gy-переключатель в VС++). Для чего это полезно?

Что можно получить от использования этого переключателя в большом VS-решении (200 проектов VC)?

Из того, что я понимаю, это в основном влияет на размер полученных двоичных файлов; но помимо небольших двоичных файлов, FLL также может помочь в уменьшении зависимостей между проектами?

Как FLL обычно влияет на время сборки?

Я также был бы признателен за обоснованное объяснение FLL в VC. MSDN объяснение довольно короткое.

4b9b3361

Ответ 1

Поскольку вы связали объяснение MSDN, вы знаете, что /Gy гарантирует, что все функции будут упакованы в их собственный COMDAT. Главное преимущество этого заключается в том, что если у вас есть идентичные функции, компоновщик может сворачивать их все в один фактический фрагмент кода ( "Складывание COMDAT" ). Это может иметь очень большие последствия, когда у вас много одинаковых функций, что часто бывает при написании современного С++, который тяжел для шаблонов.

Помимо меньшего размера результирующего исполняемого файла из-за сворачивания COMDAT и устранения неподдерживаемых COMDAT, никакого другого эффекта от /Gy нет. Чтобы быть конкретным, это не помогает в сокращении межпроектных зависимостей.

Стоимость - небольшое увеличение времени компиляции (аналогично другим флагам оптимизатора). Обычно не то, что вы заметите.