Сообщение Re[2]: Как обойти strict aliasing rule? от 22.06.2016 10:46
Изменено 08.07.2016 9:01 Mr.Delphist
Здравствуйте, Videoman, Вы писали:
V>Интересно, вопрос вроде по тойже теме, а тут:
V>
V>тут такая же проблема с выравниванием, или, из-за того что типы одинаковые, гарантий больше ?
По идее, гарантий никаких. В массиве данные идут подряд (чтобы работала арифметика указателей через sizeof), а в структуре может быть паддинг на 8 байт.
V>Интересно, вопрос вроде по тойже теме, а тут:
V>
V>struct Foo
V>{
V> union
V> {
V> std::uint32_t value[2];
V> struct
V> {
V> std::uint32_t value32Lo;
V> std::uint32_t value32Hi;
V> };
V> };
V>};
V>V>тут такая же проблема с выравниванием, или, из-за того что типы одинаковые, гарантий больше ?
По идее, гарантий никаких. В массиве данные идут подряд (чтобы работала арифметика указателей через sizeof), а в структуре может быть паддинг на 8 байт.
Re[2]: Как обойти strict aliasing rule?
Здравствуйте, Videoman, Вы писали:
V>Интересно, вопрос вроде по тойже теме, а тут:
V>
V>тут такая же проблема с выравниванием, или, из-за того что типы одинаковые, гарантий больше ?
По идее, гарантий никаких. В массиве данные идут подряд (чтобы работала арифметика указателей через sizeof), а в структуре может быть паддинг на 8 байт.
P.S. Товарищи минусующие, не стесняйтесь оставлять свою точку зрения! Ссылки на Стандарт караются плюсом в карму
V>Интересно, вопрос вроде по тойже теме, а тут:
V>
V>struct Foo
V>{
V> union
V> {
V> std::uint32_t value[2];
V> struct
V> {
V> std::uint32_t value32Lo;
V> std::uint32_t value32Hi;
V> };
V> };
V>};
V>V>тут такая же проблема с выравниванием, или, из-за того что типы одинаковые, гарантий больше ?
По идее, гарантий никаких. В массиве данные идут подряд (чтобы работала арифметика указателей через sizeof), а в структуре может быть паддинг на 8 байт.
P.S. Товарищи минусующие, не стесняйтесь оставлять свою точку зрения! Ссылки на Стандарт караются плюсом в карму