Mikhail писал(а):Для каждой платформы (платформа это, грубо, CPU + ОС) свой вариант библиотеки. Конвертацию нужно делать на входе в библиотеку и на выходе. Делать ее перед каждой арифметической операцией это огромный overhead.
Согласно моего предложения, 99% кода - это вариант 1 и вариант 3, и никакого оверхеда там не будет, наоборот на конкретной платформе будет принята оптимальная размерность и оптимальная очередность байт.
И только для описания структур и временных переменных для осуществления ввода/вывода нужно указывать типы с суффиксами le, be. Нормальный программист не будет с такими типами делать ни какой арифметики, в основном это будет оператор присваивания из int32be в integer(32), и далее вся арифметика уже с integer(32). Если так переживаете за оверхед, то можно вообще запретить для таких типов любые операции, кроме оператора присваивания и оператора сравнения.
Важность этого типа в кросс-платформенных разработках принципиальная, если ввод/вывод не идет в СУБД или текстовые файлы, то без этого нормальную программу не написать. Либо весь код будет в $IFDEF, т.е. нечитаемый.
Хороший язык - это тот язык, в котором не нужно применять костыли. А $IFDEF - это и есть костыли.