Best viewed with LeechCraft on Microsoft Linux. Войти !bnw Сегодня Клубы
c
Чят, смотри. В прыщеведре есть волшебная макра, по адресу члена структуры, ее типу и названию мембера возвращающая адрес самой структуры: / * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) Я написал то же самое так: #define container_of(ptr, type, member) \ (type *)((char *)ptr - (char *)&(((type *)0)->member)) И вроде бы УМВР. Вопрос: зачем в прыщеведре лишние костыли?
Рекомендовали: @o01eg
#E893WL / @lexszero / 4452 дня назад

я, конечно, си не очень, но у тебя там ссылка или bitwise AND?
#E893WL/HI2 / @etw / 4452 дня назад
@etw & - взятие адреса. ссылки - это в плюсах
#E893WL/BLN / @lexszero --> #E893WL/HI2 / 4452 дня назад
@lexszero Ну вот и я примерно о том же :3
#E893WL/L2S / @etw --> #E893WL/BLN / 4452 дня назад
Я ниасилил. Что за mptr?
#E893WL/0FA / @goren / 4452 дня назад
@goren Скастованный к объявленному в структуре типу указателя указатель на мембера, если не ошибаюсь.
#E893WL/Y5R / @etw --> #E893WL/0FA / 4452 дня назад
Может, это затем, чтобы можно было кастанутые мемберы макре скармливать?
#E893WL/NA1 / @etw / 4452 дня назад
@goren я тоже ниасилил mptr, он же один хуй потом только к чару кастуется - почему не сразу (char *)(ptr)
#E893WL/0TR / @lexszero --> #E893WL/0FA / 4452 дня назад
@lexszero Он, вроде, сначала приводится к тому типу, что объявлен в самой структуре. вдруг, например, ты взят, да подсунул макре младший DWORD на 64-разрядной архитектуре? или я ошибаюсь?
#E893WL/3LH / @etw --> #E893WL/0TR / 4452 дня назад
@etw В смысле, при этом в структуре объявлен QWORD.
#E893WL/907 / @etw --> #E893WL/3LH / 4452 дня назад
@etw Не молчите же! Скажите, что я не права, если это так!
#E893WL/Y2Q / @etw --> #E893WL/907 / 4452 дня назад
ptr в скобочки возьми.
#E893WL/B5V / @o01eg / 4452 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.