- 1
- 2
- 3
- 4
- 5
QByteArray ba;
char x;
x = 0x05;
ba.append (&x, sizeof (x));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+55
QByteArray ba;
char x;
x = 0x05;
ba.append (&x, sizeof (x));
Qt. Продолжаем мучить QByteArray :)
Но сама книжка годная, да и сишка там скорее как превдокод.
'это как?
люди кучей не пользуются?
в куче темно и сыро
а в стеке светло, тепло и сухо
вы так жалуетесь, как если бы никогда STL не пользовались. те же грабли, вид с боку.
ваши жалобы говорят что вам на Java пересаживатся надо: наличие утилит и синтакс шугар вас "путает".
Лучше бы у QByteArray был метод append, принимающий const void * и размер. Так и писать проще - не нужен каст к const char *, и компилятор при попытке аппенда структуры не найдет подходящей перегрузки и ругнется.
> STL <...> те же грабли, вид с боку
Вот про STL даже не подумал, вспомнив в первую очередь write/fwrite и boost::asio::buffer, у которых нет проблем с логичностью типов аргументов.
Но зачем аппендить структуры в байтовый буфер? Какой вообще в этом толк? Там же паддинг и мусор, для чего он?
Кмк, логично ограничить вход байтами (char) и заставлять людей делать явную сериализацию.
В моей скромной практике осталось только одно место, в котором это требуется: работа с двоичными протоколами. К некоторым протоколам соседние отделы прикладывают заголовки с плотно упакованными структурами и считать структуру одним разом всё-таки удобнее, чем читать каждое поле по отдельности.
> Кмк, логично ограничить вход байтами (char) и заставлять людей делать явную сериализацию.
Ага, поди, заставь закоренелого сишника с 20+ годами практики читать или писать XML, будет потом как в gk#17139 на одних sprintf :)
> считать структуру одним разом всё-таки удобнее, чем читать каждое поле по отдельности
Но ведь byte order...
Эх. Даже писать об этом не хочется, ибо ожидаю, что полетят в меня какашки.
В нашей конторе порядок байт всегда был фиксирован на little endian. В скором времени это ограничение может быть внезапно снято с расширением на другие архитектуры и тогда придется покупать на работу кофе-машину и ведёрко вазелина...
> ожидаю, что полетят в меня какашки
Удивительно, но такой подход является скорее правилом, нежели исключением. Сам работал в компании, где за 10 лет работы продукта никто по этому поводу даже не думал, хотя продукт был полностью построен на бинарных сетевых протоколах.
> придется покупать на работу кофе-машину
У вас нет на работе кофе-машины? Срочно купите.
>> Удивительно
Когда мне впервые пришлось столкнуться с сериализацией в бинарный файл (а ведь это ещё даже не сеть), я сразу узнал про порядки байт и навелосипедил свой буфер для сериализации.
Видимо, большинство людей просто не изучает проблему перед тем, как начать реализацию.
Пообещай менеджеру всё сделать за неделю @ напиши первое, что пришло в голову
Кстати, вот первые версии
http://govnokod.ru/12465
Ну они же не думали, что их когда-нибудь придется открывать...
P.S. А открыли ли?
Самые плохие, правда, это ПСД и ФЛА, вот в ФЛА там как раз встречаются разные индейцы, говорят, что в ПСД - тоже.
Что хуже всего, это даже проистекает не от нежелания, а изза бюрократии. Когда Адоб решил сплавить Апачу Флекс, то поняли, что в потрохах куча всего, что открыть тяжело (или стремно). Шейдеры так и остались проприетарными, даже АПИ стандартной библиотеки (сами заголовки) не отркыли (хотя они естесственно находятся в свободном доступе). Кодек для шрифтов - тоже не открыли и т.д.