Рабочее

Jul 07, 2016 21:30

Пожалуюсь тут немного. На жизнь ( Read more... )

Работа, Программизмы, Ярость, странные люди

Leave a comment

Comments 20

kincajou July 7 2016, 19:33:27 UTC
каким образом выравнивание структур может повлиять на вызов библиотечной функции?

Reply

aterentiev July 7 2016, 19:52:13 UTC
Я не знаю!
Бред какой-то...

Reply

aterentiev July 7 2016, 19:54:40 UTC
Точнее, догадываюсь. Ей на вход структура подается, целых три. И похоже, что функция считает, что структура придет выравненной как-то особенно. По дефолту pack(8).

Reply

kincajou July 7 2016, 21:00:27 UTC
pack(1) влитяет на упаковку полей структур .. странно, что библиотечная функция ломается из-за этого

Reply


mbr July 8 2016, 06:11:39 UTC
> на сях на довольно низком уровне под винду на gcc

ссзб.

Вообще, это вполне очевидно, потому как библиотека прикомпилена, а хедер со структурой - нет. За использования упаковки без понимания ее смысла и закрытия там где не нужно уже - бить по рукам и больно.

Reply


ex0_planet July 8 2016, 07:20:10 UTC
почему б не использовать #pragma pack(push,x) ?

Reply

aterentiev July 8 2016, 07:30:25 UTC
дык под конец так и сделал... просто кто бы мог подумать
хотя, чем вот дальше я размышляю, тем больше соглашаюсь - подключенные библиотеки предкомпилированные, в них по факту динамический тайпкастинг идет, а потому то, что я создал и передал по ссылке будет интерпретрировано с учетом локального выравнивания
впредь буду умнее

Reply

ex0_planet July 8 2016, 07:33:50 UTC
Гы, ну да. Просто в плохих книжках по C вбивают что-то невнятное, и норот после этого начинает считать всякие #include какой-то магией, которая якобы работает через (несуществующий) механизм "модульности", etc, etc. А оно на самом деле просто тупой ассемблер с забавным синтаксисом, и всегда транслирует строго как написано (оптимизации уже сильно потом, в виде AST или сгенерированного кода).

Reply

mbr July 8 2016, 10:07:48 UTC
Проблема в том, что хороших-то и нет. Я по крайней мере не знаю. Только личный опыт.

Reply


Leave a comment

Up