одного struct в другой? Не могу найти
Что ты за касты такие выдумал, я не знаю... Нет в С правил преобразования структур друг а друга.
а с кастами что не так? почему выдумал?
Йо, дай ссылку пожалуйста на место в стандарте где есть про каст (преобразование) структур
так я и спрашивал с целью узнать есть там или нет эта информация
а я видел люди кастят принтеры на структуру, в поинтер на другую структуру. Или это другое?
Это возможно в том случае, если одна из структур является первым полем другой структуры. Но руки программисту оторвать надо ибо после таких поворотов судьбы компилятор при оптимизации крякнет и оптимизировать эти структуры не будет. А код переписать на обращение к полю по имени.
А вот я видел в либув каст прям в доке разрешён. Это почему так? Structures are aligned so that any libuv request can be cast to uv_req_t. http://docs.libuv.org/en/v1.x/request.html
У меня недостаточно информации, чтобы что-то однозначно сказать. Подозреваю, что это по сути tagged union: одно поле - тип, остальное - union. Тогда для каждого варианта внутреннего union'а можно сделать отдельную структуру из типа и этого варианта и добавить пустых полей для сохранения размера структуры. Ну или там тривиально typedef'ами сделали несколько типов из одного.
>Это возможно в том случае, если одна из структур является первым полем другой структуры. А где про это можно почитать? Или как погуглить
Тут ничего не посоветую, я только видел такое в коде.
Обсуждают сегодня