Информация об изменениях

Сообщение Re[22]: Область применения С++ от 28.06.2017 10:34

Изменено 28.06.2017 10:35 N. I.

Re[22]: Область применения С++
PavelCH:

PCH>Но разве там нет такой проблемы, что использование с++ тянет за собой куча мусора в виде экстерналов? Мол статическая инициализация потокобезопасная, неявно вызывает всяческие обертки и т.д. В этом плаче чистый с не генерит лишнего кода. Поправьте, если я не прав.


Насколько я знаю, для потокобезопасной статической инициализации ничего особенного делать не нужно, "обёртки" появляются, когда имеет место динамическая инициализация статических объектов. Однако в C инициализатором объекта со static или thread storage duration может быть только константное выражение или строковый литерал, а динамическая инициализация таких объектов там не предусмотрена в приципе. Т.е. в C "лишнего кода" от динамической инициализации не будет не потому, что она там реализована более эффективно, а потому что воспользоваться таковой там вообще нельзя.
Re[22]: Область применения С++
PavelCH:

PCH>Но разве там нет такой проблемы, что использование с++ тянет за собой куча мусора в виде экстерналов? Мол статическая инициализация потокобезопасная, неявно вызывает всяческие обертки и т.д. В этом плаче чистый с не генерит лишнего кода. Поправьте, если я не прав.


Насколько я знаю, для потокобезопасной статической инициализации ничего особенного делать не нужно, "обёртки" появляются, когда имеет место динамическая инициализация статических объектов. Однако в C инициализатором объекта со static или thread storage duration может быть только константное выражение или строковый литерал, а динамическая инициализация таких объектов там не предусмотрена в приципе. Т.е. в C "лишнего кода" от динамической инициализации статиков не будет не потому, что она там реализована более эффективно, а потому что воспользоваться таковой там вообще нельзя.