Страница 2 из 3
Добавлено: 13 янв 2004, 16:53
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)))
Добавлено: 13 янв 2004, 17:02
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]

Добавлено: 13 янв 2004, 19:21
Lepsik
2temp
--внимание, правильный ответ
--структуру. что еще можно сделать с поинтером, не зная деталей
--структуры кроме имени одного поля? (вопрос риторический)
такие задачи напоминают школьные за 6-й класс. Где при первом рассмотрении решаются дифуравнениями 5-го порядка.
А на самом половина ответа была рассказана в классе и решается банальной арифметической подстановкой.
с дефайнами можно такой букет сгородить - не один ботаник гербарий потом не соберет.
--vq, мне вас жаль. при всем вашем самомнении вы не знаете базовых вещей, примите это к сведению.
кроме самомнения надо еще собеседников уметь слышать. Особенно слова про разрядность машин.
--- ((type *)((char*)(ptr)-(unsigned long)(&((type*)0)->name)))
раз уж такой умный - скажи почему не будет работать на всех платформах ?
Добавлено: 13 янв 2004, 19:25
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]

Так-то всё понятно

Я имел ввиду начальный вопрос, я вот например знаю неодного человека который на вопрос написать signum запросто мог бы сваять приведённую выше фигню.
Именно поэтому я назвал вопрос некорректным.
Добавлено: 13 янв 2004, 19:31
Marmot
Добавлено: 13 янв 2004, 19:38
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)))
Вы бы синтаксические ошибки поправили в своём коде для начала.
А то как видно базовых знаний не хватает как раз у Вас.
Как поправите, можно продолжить обсуждение.
2) А каких именно базовых знаний у меня не хватает? Можно узнать?
(только Вы не волнуйтесь, а сформулируйте спокойно. Не так, как с #define)
3) А про моё самомнение - это Вы бросьте. И тени нет в моих постингах
самомнения. Есть порой язвительная критика в адрес неточностей. Понятно. Это не нравится. Но не надо с больной головы в этом случае перекладывать на здоровую.
4) больше тренируйтесь с #define, пока не перестаните делать ошибки в коде.
2 Lepsik,
с дефайнами можно такой букет сгородить - не один ботаник гербарий потом не соберет.
Ты не понял. Этот тестер
не может написать правильно дефайн.

Смотри внимательно его код.
Добавлено: 13 янв 2004, 19:47
ajkj3em
vg писал(а):2 циничный temp,
[snip]
А то как видно базовых знаний не хватает как раз у Вас.
Как поправите, можно продолжить обсуждение.
[snip]
Это не ты недавно с оператора запятая дивился ? Не думаю, что после этого с тобой кто-либо С обсуждать будет

Добавлено: 13 янв 2004, 19:49
vg
2 Lepsik,
--vq, мне вас жаль. при всем вашем самомнении вы не знаете базовых вещей, примите это к сведению.
кроме самомнения надо еще собеседников уметь слышать. Особенно слова про разрядность машин.
Не понял. Это твоя критика в мой адрес? Почему?
Добавлено: 13 янв 2004, 20:01
vg
2 drain bamage,
1) А при чём здесь запятая? В данном топике и в данном контексте?
2) Про запятая. А ты не
путаешься сам здесь, когда говоришь про
С.
Может про С
++ надоб говорить? Я просто фигею с твоего апломба. Причёт в этом случае совершенно безосновательного.
3) А уж про то будут-не будут. Так на ваше
личное,
drain bamage, мнение мне совершенно .... неважно.
Добавлено: 13 янв 2004, 20:08
ajkj3em
vg писал(а):2 drain bamage,
1) А при чём здесь запятая? В данном топике и в данном контексте?
"Осадок остался" от запятой
2) Про запятая. А ты не
путаешься сам здесь, когда говоришь про
С.
Может про С
++ надоб говорить? Я просто фигею с твоего апломба. Причёт в этом случае совершенно безосновательного.
Как все запущено ... оператор запятая появился в C++ ... OMFG
Добавлено: 13 янв 2004, 20:08
vg
2 Marmot,
Тут недавно видел как данные (XML) из одной функции в другую передавались через файл!!!
Ну, здрасьте.... И Вы, Marmot, ту да же.

Это тоже (как у интЕлигента выше) завуалированная критика в мой адрес?

Так в спортивной теме я про файлы не писал.

Добавлено: 13 янв 2004, 20:14
Marmot
vg писал(а):2 Marmot,
Тут недавно видел как данные (XML) из одной функции в другую передавались через файл!!!
Ну, здрасьте.... И Вы, Marmot, ту да же.

Это тоже (как у интЕлигента выше) завуалированная критика в мой адрес?

Так в спортивной теме я про файлы не писал.

Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...

Добавлено: 13 янв 2004, 20:16
vg
2 drain bamage,
Да ты прав. Там и здесь я прокосячил. С запятой... И про С++ верно. Бывает...
Ну так в мэтры, как некоторые, я и не "озвучиваюсь".
Добавлено: 13 янв 2004, 20:31
vg
2 Marmot,
Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...
Искал в словарике значение слова пандемия. Нашёл только:
pandemonium - ад кромешный, "столпотворение вавилонское".
Что такое пандемия, и почему это относится ко мне?
2 drain bamage,
Вы бы что-нибудь по существу топика сказали. Раз такой умный, почему не поправишь ошибки #define тестера? Или тоже, как Циника, его защищаешь так же
застенчиво? Лично мне до сих пор стыдно за ту ситуацию (про окна и десктоп) перед Циником. Не за себя. За Вас, уважаемый. За Вашу стеснительность.
Добавлено: 13 янв 2004, 20:38
Marmot
vg писал(а):2 Marmot,
Шо, вы тоже этим увлекаетесь? Это похоже пандемия какая-то...
Искал в словарике значение слова пандемия. Нашёл только:
pandemonium - ад кромешный, "столпотворение вавилонское".
Что такое пандемия, и почему это относится ко мне?
А не надо искать в "словарике", надо искать на Google
http://www.google.com/search?sourceid=n ... 0%B8%D1%8F
Хотя, помоему, это достаточно широко используемое слово, не пролетариатом конечно

(не удержался от наезда

)