Size: a a a

2020 March 06

AB

Artöm Bakri Al-Sarmini in pro.cxx
Vyacheslav Olkhovchenkov
а причем тут reinterpret_cast?
Потому что в этом случае сикаст это реинтерпрет
источник

FS

Flower Surgeon in pro.cxx
Pepe 🐸
ну то что когда я говорю "так нельзя делать" имею ввиду что это УБ по стандарту
дак вас (и не только) просят показать это UB в стандарте
источник

P

Pepe 🐸 in pro.cxx
Vyacheslav Olkhovchenkov
а причем тут reinterpret_cast?
при том что твой каст это реинтерпрет каст (если отбросить его сишность и ситуации когда этл не реинтерпрет каст)
источник

FS

Flower Surgeon in pro.cxx
а не кучу текста, как @das_3sz3tt
источник

P

Pepe 🐸 in pro.cxx
Flower Surgeon
дак вас (и не только) просят показать это UB в стандарте
я же ссылку дал, там перечислены все случаи когда так можно делать
источник

FS

Flower Surgeon in pro.cxx
извиняюсь, я не перехожу на личности, я просто не линкую тот пост
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
самурай без меча это типа самурай с мечом..
источник

P

Pepe 🐸 in pro.cxx
Flower Surgeon
а не кучу текста, как @das_3sz3tt
извини нет одной ссылки. Там написано "нельзя unless" Вот посмотри когда можно все остальное нельзя
источник

FS

Flower Surgeon in pro.cxx
Pepe 🐸
извини нет одной ссылки. Там написано "нельзя unless" Вот посмотри когда можно все остальное нельзя
инт в инт не запрещено, как видим
источник

FS

Flower Surgeon in pro.cxx
Pepe 🐸
извини нет одной ссылки. Там написано "нельзя unless" Вот посмотри когда можно все остальное нельзя
"нельзя если не", тогда уж :)
источник

P

Pepe 🐸 in pro.cxx
Flower Surgeon
инт в инт не запрещено, как видим
но я не инт в инт а тип A в тип B
источник

P

Pepe 🐸 in pro.cxx
Pepe 🐸
но я не инт в инт а тип A в тип B
так просто совпало что внутри инты. Но в этом и был мой вопрос
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Flower Surgeon
а не кучу текста, как @das_3sz3tt
Был разговор о чем? Что для
union {
   int[2] arr;
   struct {
       int a, b;
   } s;

};
нельзя писать в arr и потом читать из s. Это уб по стандарту, ссылки я привел. По разным причинам этот код работает как ожидается в большой тройке, но уб это не отменяет
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Не любое уб одинаково вредно, можно полагаться на гарантии компилятора
источник

P

Pepe 🐸 in pro.cxx
Artöm Bakri Al-Sarmini
Не любое уб одинаково вредно, можно полагаться на гарантии компилятора
одного для одной платформы да, но если делаешь для большого числа платформ, ос и компиляторов то страшно
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Нужно понимать возможные последствия. Гццдевы могут сказать, что через 5 лет в gcc15 это уб будет ломать код, эбитесь
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Они этого не скажут конечно
источник

FS

Flower Surgeon in pro.cxx
Artöm Bakri Al-Sarmini
Был разговор о чем? Что для
union {
   int[2] arr;
   struct {
       int a, b;
   } s;

};
нельзя писать в arr и потом читать из s. Это уб по стандарту, ссылки я привел. По разным причинам этот код работает как ожидается в большой тройке, но уб это не отменяет
там про УБ вообще ни слова же. От Анатолия я увидел про паддинг, но тут тоже не всё так очевидно. Своими словами можете объяснить, желательно на пальцах?
источник

FS

Flower Surgeon in pro.cxx
Я сам хотел вбросить пример с 4 интами, но 2 тоже хорошо для разбора полётов.
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Flower Surgeon
там про УБ вообще ни слова же. От Анатолия я увидел про паддинг, но тут тоже не всё так очевидно. Своими словами можете объяснить, желательно на пальцах?
Есть такое понятие, как cis - ряд полей, удовлетворяюших набору требований. Если есть юнион с двумя полями-структурами, и у них есть cis из, скажем, одного инта, этот инт можно читать всегда, независимо от активного поля юниона
источник