ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
1021154 Топик полностью
fk0, легенда (26.07.2020 18:06, просмотров: 601) ответил LightElf на А я тебе и говорю, что неопределенное поведение упакованных структур - это изначально косяк стандартизаторов языка. Эта фича есть во всех вменяемых компиляторах с лохматых времен. Наверно она нужна зачем-то. И все ее как-то реализуют. Но пуристы в комитете предпочитают прятать голову в песок и изобретают всякую никому не нужную хрень, вместо введения упакованных структур в стандарт. С описанием их конкретного поведения в разных случаях. Например, можно указать что адрес члена
Косяк стандартизаторов в том, что этой недофичи попросту нет в стандарте? Оригинально. Её и не хотят принимать, потому, что очень много спорных моментов возникает. Значит компилятор должен уметь генерировать код умеющийся обращаться к невыравненным данным вообще (сейчас такой обязанности у компилятора нет). Значит объявление такой структуры должно автоматически вводит множество типов унаследованных от базовых (типа int), но со своим выравниванием. Значит эти типы должны 

быть взаимозаменяемы по значению с обычными типами (и тут разработчики C++ просто сразу вешаются), что там делать с указателями и ссылками х.з., одно вместо другого не подставишь. С существующим функционалом языка упакованные структуры -- не стыкуются. Вот проблема. И непонятно зачем вообще вносить такую сущность в сам язык, когда её можно реализовать библиотекой (на C++).

[ZX]