169 похожих чатов

Может кто-нибудь тыкнуть меня в спеку, где описаны правила каста

одного struct в другой? Не могу найти

12 ответов

9 просмотров

Что ты за касты такие выдумал, я не знаю... Нет в С правил преобразования структур друг а друга.

Dmitry-Croft Автор вопроса
Ilya Zviagin
Что ты за касты такие выдумал, я не знаю... Нет в ...

а с кастами что не так? почему выдумал?

Йо, дай ссылку пожалуйста на место в стандарте где есть про каст (преобразование) структур

Dmitry-Croft Автор вопроса
Ilya Zviagin
Йо, дай ссылку пожалуйста на место в стандарте где...

так я и спрашивал с целью узнать есть там или нет эта информация

Dmitry-Croft Автор вопроса
Ilya Zviagin
Нет, нету

а я видел люди кастят принтеры на структуру, в поинтер на другую структуру. Или это другое?

Dmitry Croft
а я видел люди кастят принтеры на структуру, в пои...

Это возможно в том случае, если одна из структур является первым полем другой структуры. Но руки программисту оторвать надо ибо после таких поворотов судьбы компилятор при оптимизации крякнет и оптимизировать эти структуры не будет. А код переписать на обращение к полю по имени.

Dmitry-Croft Автор вопроса

А вот я видел в либув каст прям в доке разрешён. Это почему так? Structures are aligned so that any libuv request can be cast to uv_req_t. http://docs.libuv.org/en/v1.x/request.html

Dmitry Croft
А вот я видел в либув каст прям в доке разрешён. Э...

У меня недостаточно информации, чтобы что-то однозначно сказать. Подозреваю, что это по сути tagged union: одно поле - тип, остальное - union. Тогда для каждого варианта внутреннего union'а можно сделать отдельную структуру из типа и этого варианта и добавить пустых полей для сохранения размера структуры. Ну или там тривиально typedef'ами сделали несколько типов из одного.

Dmitry-Croft Автор вопроса
Viktor Shamparov
Это возможно в том случае, если одна из структур я...

>Это возможно в том случае, если одна из структур является первым полем другой структуры. А где про это можно почитать? Или как погуглить

Dmitry Croft
>Это возможно в том случае, если одна из структур ...

Тут ничего не посоветую, я только видел такое в коде.

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
Hey someone plz help to resolve my issue here is my table... Log { id user_id type target_ct target_obj_id action_ct action_obj_id workspace_id created_at } i wanna fil...
Rahul Singh
1
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта