Код: Выделить всё
#define func(ptr) struct_by_field(ptr, struct s, a)
#define struct_by_field(ptr, type, name) \
((type *)((char*)(ptr)-(unsigned long)(&((type*)0)->name)))
Код: Выделить всё
#define func(ptr) struct_by_field(ptr, struct s, a)
#define struct_by_field(ptr, type, name) \
((type *)((char*)(ptr)-(unsigned long)(&((type*)0)->name)))
[trn]davaj myslit' logicheskiMarmot писал(а):А мне, например, это неочевидно, ...temp писал(а):[trn]vnimanie, pravil'nyj otvet[/trn]
func() [trn]vozvrashaet ukazatel' na strukturu po ukazatelju na ee pole [/trn]a[trn]. wto mozhno bylo v principe ponjat' iz togo chto (a) vopros [/trn]entry-level[trn] (b) parameter nazyvaetsja[/trn] a_ptr [trn]i vozvrashchaetsja ukazatel' na strukturu. chto eshche mozhno sdelat' s pointerom, ne znaja detalej struktury krome imeni odnogo polja? (vopros ritoricheskij)[/trn]
Код: Выделить всё
void sample() { struct s tmp; assert(&tmp == func(&tmp.a)); }
Так-то всё понятноtemp писал(а):[trn]davaj myslit' logicheskiMarmot писал(а):А мне, например, это неочевидно, ...temp писал(а):[trn]vnimanie, pravil'nyj otvet[/trn]
func() [trn]vozvrashaet ukazatel' na strukturu po ukazatelju na ee pole [/trn]a[trn]. wto mozhno bylo v principe ponjat' iz togo chto (a) vopros [/trn]entry-level[trn] (b) parameter nazyvaetsja[/trn] a_ptr [trn]i vozvrashchaetsja ukazatel' na strukturu. chto eshche mozhno sdelat' s pointerom, ne znaja detalej struktury krome imeni odnogo polja? (vopros ritoricheskij)[/trn]
Код: Выделить всё
void sample() { struct s tmp; assert(&tmp == func(&tmp.a)); }
![]()
imeem v nalichii:
* strukturu[/trn] s
[trn]* pole v wtoj strukture s imenem [/trn]a
[trn]* prototip funkcii prinimajushchej ukazatel' s imenem[/trn] a_ptr [trn]i ...
* vozvrashchajushij ukazatel' na[/trn] s
[trn]kakie est' varianty svjazat' wti chetyre elementa vmeste ?[/trn]
Имелись ввиду не все junior developers, а только придурочные.vg писал(а):Вы, Мармот, сами говорили, что работали преподавателем. Тем более некоректно так говорить о джуниорах, имхо ("придурошные").А придурочные junior developers иногда такую туфту гонят...
![]()
![]()
![]()
Код: Выделить всё
#define func(ptr) struct_by_field(ptr, struct s, a)
#define struct_by_field(ptr, type, name) \
((type *)((char*)(ptr)-(unsigned long)(&((type*)0)->name)))
Ты не понял. Этот тестер не может написать правильно дефайн.с дефайнами можно такой букет сгородить - не один ботаник гербарий потом не соберет.
"Осадок остался" от запятойvg писал(а):2 drain bamage,
1) А при чём здесь запятая? В данном топике и в данном контексте?
Как все запущено ... оператор запятая появился в C++ ... OMFG2) Про запятая. А ты не путаешься сам здесь, когда говоришь про С.
Может про С++ надоб говорить? Я просто фигею с твоего апломба. Причёт в этом случае совершенно безосновательного.![]()
Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...vg писал(а):2 Marmot,
Ну, здрасьте.... И Вы, Marmot, ту да же.Тут недавно видел как данные (XML) из одной функции в другую передавались через файл!!!Это тоже (как у интЕлигента выше) завуалированная критика в мой адрес?
Так в спортивной теме я про файлы не писал.
Искал в словарике значение слова пандемия. Нашёл только:Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...
А не надо искать в "словарике", надо искать на Googlevg писал(а):2 Marmot,Искал в словарике значение слова пандемия. Нашёл только:Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...
pandemonium - ад кромешный, "столпотворение вавилонское".
Что такое пандемия, и почему это относится ко мне?