fk0, легенда (08.04.2020 16:55, просмотров: 672) ответил LightElf на Поэтому в каждом компиляторе есть свой собственный, уникальный
способ сделать упакованные структуры. Я ж говорю, стандартизаторы -
те еще затейники. Ввести в стандарт мало кому нужный complex.h, но
не ввести стопку элементарных макросов с описанием целевой машины
(типа эндианности, направления роста стека, нативного размера
машинного слова и т.д.). В результате каждый второй Цэ-проект на
гитхабе занимается попытками выяснить сие по косвенным признакам.
Смотря как смотреть. Упакованные структуры -- не нужны. Знать тебе
эндианность, направление роста стека и прочее -- зачем? Если ты
пишешь портируемый код, то ты не должен полагаться на такие знания.
Это нужно только системным программистам в исключительных случаях.
А пытаются применять когда попало, когда не нужно -- и огребают
проблем. Код на другой платформе уже или не скомпилируется, или не
зарабоатет. А complex.h же очевидно нужен в цифровой обработке
сигналов, например.
[ZX]
-
- Блин, но системное программирование - это и есть основная область
применения Цэ в дивном новом мире питонов и джаваскриптов. И как
раз для портируемости и надо знать эндианность и все такое прочее.
Прятать голову в песок можно сколько угодно, но вот тебе IP-пакет и
у него строго предопределенная эндианность. Ввели бы один раз в
стандарт что-то вроде GCC-шного __BYTE_ORDER__ - и прекрасно. То же
самое с упакованными структурами/типами. Если бы они не были нужны
- никто бы LightElf(359 знак., 08.04.2020 18:29)
- Вот потому и в стандарт и не вводится. Написанная программа должна
одинаково работать на всех платформах. Почему не стандартизовать --
я ответил, из-за проблемы с указателями на члены структуры.
Касательно ЦОС, я видел, где complex.h использовался. Питон здеь ни
при чём, можно конечно всё то же самое сделать руками, посчитав
синусы и косинусы отдельно, и более того в реализации на целых
числах так и будет, но в обобщённом коде -- вполне себе решение. И
да, системные fk0(209 знак., 08.04.2020 22:17, ссылка)