zagadka

Все, что вы хотели знать о программизме, но боялись спросить.
temp
Частый Гость
Сообщения: 17
Зарегистрирован: 03 дек 2003, 15:14

Сообщение temp »

vq, [trn]mne vas zhal'. pri vsem vashem samomnenii vy ne znaete bazovyh veshchej, primite wto k svedeniju.[/trn]

Код: Выделить всё

#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)))
temp
Частый Гость
Сообщения: 17
Зарегистрирован: 03 дек 2003, 15:14

Сообщение temp »

Marmot писал(а):
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));
}
А мне, например, это неочевидно, ...
[trn]davaj myslit' logicheski :)

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] :wink:
Аватара пользователя
Lepsik
Житель
Сообщения: 522
Зарегистрирован: 17 фев 2003, 18:34
Откуда: Berlin
Контактная информация:

Сообщение Lepsik »

2temp
--внимание, правильный ответ
--структуру. что еще можно сделать с поинтером, не зная деталей
--структуры кроме имени одного поля? (вопрос риторический)

такие задачи напоминают школьные за 6-й класс. Где при первом рассмотрении решаются дифуравнениями 5-го порядка.
А на самом половина ответа была рассказана в классе и решается банальной арифметической подстановкой.

с дефайнами можно такой букет сгородить - не один ботаник гербарий потом не соберет.

--vq, мне вас жаль. при всем вашем самомнении вы не знаете базовых вещей, примите это к сведению.

кроме самомнения надо еще собеседников уметь слышать. Особенно слова про разрядность машин.

--- ((type *)((char*)(ptr)-(unsigned long)(&((type*)0)->name)))

раз уж такой умный - скажи почему не будет работать на всех платформах ?
Последний раз редактировалось Lepsik 13 янв 2004, 19:28, всего редактировалось 1 раз.
Аватара пользователя
Marmot
Графоман
Сообщения: 39276
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

temp писал(а):
Marmot писал(а):
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));
}
А мне, например, это неочевидно, ...
[trn]davaj myslit' logicheski :)

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] :wink:
Так-то всё понятно :-)
Я имел ввиду начальный вопрос, я вот например знаю неодного человека который на вопрос написать signum запросто мог бы сваять приведённую выше фигню.
Именно поэтому я назвал вопрос некорректным.
Аватара пользователя
Marmot
Графоман
Сообщения: 39276
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а):
А придурочные junior developers иногда такую туфту гонят...
Вы, Мармот, сами говорили, что работали преподавателем. Тем более некоректно так говорить о джуниорах, имхо ("придурошные").
:twisted: :twisted: :twisted:
Имелись ввиду не все junior developers, а только придурочные.
А тут (да и везде) таких много. :twisted: :twisted: :twisted: :twisted: :twisted:
Тут недавно видел как данные (XML) из одной функции в другую передавались через файл!!! :-)
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 циничный temp,

1)

Код: Выделить всё

#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)))
Вы бы синтаксические ошибки поправили в своём коде для начала.
А то как видно базовых знаний не хватает как раз у Вас. :lol:
Как поправите, можно продолжить обсуждение.

2) А каких именно базовых знаний у меня не хватает? Можно узнать?
(только Вы не волнуйтесь, а сформулируйте спокойно. Не так, как с #define)

3) А про моё самомнение - это Вы бросьте. И тени нет в моих постингах самомнения. Есть порой язвительная критика в адрес неточностей. Понятно. Это не нравится. Но не надо с больной головы в этом случае перекладывать на здоровую.

4) больше тренируйтесь с #define, пока не перестаните делать ошибки в коде.

2 Lepsik,
с дефайнами можно такой букет сгородить - не один ботаник гербарий потом не соберет.
Ты не понял. Этот тестер не может написать правильно дефайн. :lol: Смотри внимательно его код.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

vg писал(а):2 циничный temp,

[snip]

А то как видно базовых знаний не хватает как раз у Вас. :lol:
Как поправите, можно продолжить обсуждение.

[snip]
Это не ты недавно с оператора запятая дивился ? Не думаю, что после этого с тобой кто-либо С обсуждать будет :-|
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 Lepsik,
--vq, мне вас жаль. при всем вашем самомнении вы не знаете базовых вещей, примите это к сведению.

кроме самомнения надо еще собеседников уметь слышать. Особенно слова про разрядность машин.
Не понял. Это твоя критика в мой адрес? Почему?
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 drain bamage,

1) А при чём здесь запятая? В данном топике и в данном контексте?

2) Про запятая. А ты не путаешься сам здесь, когда говоришь про С.
Может про С++ надоб говорить? Я просто фигею с твоего апломба. Причёт в этом случае совершенно безосновательного. :lol:

3) А уж про то будут-не будут. Так на ваше личное, drain bamage, мнение мне совершенно .... неважно.
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

vg писал(а):2 drain bamage,

1) А при чём здесь запятая? В данном топике и в данном контексте?
"Осадок остался" от запятой
2) Про запятая. А ты не путаешься сам здесь, когда говоришь про С.
Может про С++ надоб говорить? Я просто фигею с твоего апломба. Причёт в этом случае совершенно безосновательного. :lol:
Как все запущено ... оператор запятая появился в C++ ... OMFG
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 Marmot,
Тут недавно видел как данные (XML) из одной функции в другую передавались через файл!!!
Ну, здрасьте.... И Вы, Marmot, ту да же. :lol: Это тоже (как у интЕлигента выше) завуалированная критика в мой адрес? :lol: Так в спортивной теме я про файлы не писал. :lol:
Аватара пользователя
Marmot
Графоман
Сообщения: 39276
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а):2 Marmot,
Тут недавно видел как данные (XML) из одной функции в другую передавались через файл!!!
Ну, здрасьте.... И Вы, Marmot, ту да же. :lol: Это тоже (как у интЕлигента выше) завуалированная критика в мой адрес? :lol: Так в спортивной теме я про файлы не писал. :lol:
Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то... :shock:
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 drain bamage,

Да ты прав. Там и здесь я прокосячил. С запятой... И про С++ верно. Бывает... :wink:
Ну так в мэтры, как некоторые, я и не "озвучиваюсь".
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

2 Marmot,
Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...
Искал в словарике значение слова пандемия. Нашёл только:
pandemonium - ад кромешный, "столпотворение вавилонское".
Что такое пандемия, и почему это относится ко мне?

2 drain bamage,

Вы бы что-нибудь по существу топика сказали. Раз такой умный, почему не поправишь ошибки #define тестера? Или тоже, как Циника, его защищаешь так же застенчиво? Лично мне до сих пор стыдно за ту ситуацию (про окна и десктоп) перед Циником. Не за себя. За Вас, уважаемый. За Вашу стеснительность.
Аватара пользователя
Marmot
Графоман
Сообщения: 39276
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а):2 Marmot,
Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...
Искал в словарике значение слова пандемия. Нашёл только:
pandemonium - ад кромешный, "столпотворение вавилонское".
Что такое пандемия, и почему это относится ко мне?
А не надо искать в "словарике", надо искать на Google
http://www.google.com/search?sourceid=n ... 0%B8%D1%8F
Хотя, помоему, это достаточно широко используемое слово, не пролетариатом конечно :-) (не удержался от наезда :-) )
Закрыто