ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
1 мая
992899 Топик полностью
fk0, легенда (08.04.2020 11:42, просмотров: 638) ответил LightElf на Но зачем делать руками работу компилятора и/или железа? Эндианность, очевидно, в IP пакете фиксирована. А в коде, очевидно, используются стандартные HTONL()/htonl() сотоварищи. Без прагм, в зависимости от компилятора и целевой платформы, может разложиться весьма по-разному. С прагмами - единственным определенным образом. И почему это "случайно выровненный int32"? Вполне себе не случайно, а вовсе даже прописано в спецификации на драйвер канального уровня. Для
Никак по-разному разложиться не может. Разложится всегда именно так же как и с прагмами. Потому, что иначе не были бы возможны массивы (alignas == sizeof) если речь идет о типах uint8, uint16, uint32 и о "ручном" раскладывании с выравниванием, как сделано у тебя. А если речь о других типах (структуры), или раскладка не выровненная (int32 не на 32-битной границе), то возникает упомянутая мною проблема: невозможность использования указателей. Выводы -- прагмы бесполезны и не 

нужны в данном твоем случае. А в других случаях -- путь к бесконечным приключениям в неожиданных местах.

[ZX]