возврат из подпрограмм

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Nickita A Startcev! You wrote in conference fido7.ru.embedded to Kirill Frolov on Thu, 24 Aug

2006 13:56:16 +0400:

JA>>>>> Hе знаю, возможно-ли вообще профессиональное решение с JA>>>>> применением очень простого (простейшего!) класса работы с JA>>>>> COM-портом. DT>>>> Вот-вот, давайте не будем путать разные задачи. >>> С одной стороны - да. А с другой стороны, если есть задаваемый >>> параметр величины таймаута в мс, то хотелось бы, чтобы эти "мс" >>> выдерживались по-возможности точно. Думаю, что решение, например, ~~~~~~~~~~~~~~~~~~~~~ >>> предложенное Димой,

KF>> Для этого нужна ОС реального времени. Вроде QNX. Или хоть линух KF>> который с патчем.

NA> Или ядрёный драйвер под "любую" OS. :)

Ничего этого, как показала практика, не нужно. Для просветления медитируй над подчеркнутой фразой.

dima

formatting link

Reply to
Dmitry Orlov
Loading thread data ...

Привет!

Thu Aug 24 2006 19:59, Dmitry Orlov wrote to Jurgis Armanavichius:

Вот и я удивился :-)

Юргис

Reply to
Jurgis Armanavichius

Привет!

Thu Aug 24 2006 10:40, George Shepelev wrote to Jurgis Armanavichius:

JA>> Hесогласие с вашим бредом - это хамство? Хм... Hе знал... Прошу JA>> прощения. Подскажите тогда правильное слово, которым я мог бы JA>> охарактеризовать ваши высказывания. А то мне на ум приходят только JA>> такие: бред, чушь, чепуха... GS> Стёб? ;)

А то! Тут ведь как? Лето заканчивается, дожди начались... Хочется напоследок повеселиться... Осень ведь приближается... :-)

Юргис

Reply to
Jurgis Armanavichius

В цитированном письме ни про какую мб разговора не было. При том что и "PC-совместимая мб"

- вещь тоже мало осмысленная, особенно если учесть что PC-совместимой систему делает именно мб. Масло маслянное по русски называется. Хотя и употребляется. Вон у известного радетеля за чистоту терминов ДО - вопросов не возникло.

Reply to
Arcady Schekochikhin

Я понимаю что для тебя если чего то ты не видишь, то этого как бы и не существует, но поверь что это не совсем так - Африка таки существует, и Австралия и Антарктидой. А new и delete - есть - только вот данный язык (в отличии от например java) - решил их вызвать для тебя сам.

Reply to
Arcady Schekochikhin

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Jurgis Armanavichius on Fri, 25 Aug 2006 06:07:34 +0000 (UTC):

AS> Я понимаю что для тебя если чего то ты не видишь, то этого как бы и AS> не существует, но поверь что это не совсем так - Африка таки AS> существует, и Австралия и Антарктидой. А new и delete - есть -

А кто говорил, что их нет? Только то, что при создании/удалении с их помощью объектов вызываются конструктор и деструктор не означает, что конструктор и деструктор надо вызывать руками и именно это иллюстрируют примеры статически или автоматически созданных объектов, где никаких new/delete не нужно, а конструктор и деструктор вызываются.

AS> только вот данный язык (в отличии от например java) - решил их AS> вызвать для тебя сам.

Бред. Нет никих new/delet при создании/уничтожении статических и автоматических объектов. Как говорит Ольга Нонова (tm) коллектив - позорище.

dima

formatting link

Reply to
Dmitry Orlov

Привет!

Fri Aug 25 2006 10:05, Arcady Schekochikhin wrote to Jurgis Armanavichius:

Звиняйте. Я беседовал с коллегой, который превосходно осведомлен о контексте и знает, что я говорю именно о "материнке". Hе могу же я на самом деле в _каждом_ письме приводить подробную спецификацию своей системы! :-)

Если же кому-то другому стала интересна обсуждаемая тема, то он пройдется по треду или заглянет в архивы и поймет, о чем речь. Если же и в архивах ничего нет - просто спросит в конце концов.

Так что, я с тобой не согласен.

AS> При том что и "PC-совместимая мб" - вещь тоже мало осмысленная, AS> особенно если учесть что PC-совместимой систему делает именно мб. AS> Масло маслянное по русски называется. Хотя и употребляется.

Чиво? PC-совместимая мб - вещь мало осмысленная? Это как? По-моему, если "мама" PC-совместимая, то все сразу понятно: на ней может быть запущена Винда или Линукс (некоторые другие системы в данном случае неинтересны). Какое тут масляное масло? Ведь система вполне может быть (и бывает) отнюдь не PC-совместимая. Или ты о чем-то другом?

Кстати, утверждение "PC-совместимой систему делает именно мб" IMHO является ложным. Т.к. Термин "материнская плата" ничего не говорит о том, для PC она разработана или для какого-нить интеллектуального станка, ничего общего с PC не имеющего. Это универсальный термин, который вполне можно заменить словами "основная плата".

Юргис

Reply to
Jurgis Armanavichius

Привет!

Fri Aug 25 2006 10:07, Arcady Schekochikhin wrote to Jurgis Armanavichius:

Hичего не понял... Это ты, типа, что-то умное сказал? Тогда я - пас. В глубокие дискуссии на эту тему Африки или Антарктиды я не вступаю за полной ненадобностью.

Однако, хотел бы напомнить, о чем шла речь. Я говорил, что мне нравится в ООП его автоматический вызов деструкторов. Hа это Кирилл заявил, что деструктор автоматически не вызывается. И понеслась :-)

=========== begin =========== >> KF> А деструктор -- он самим Биллом Гейтсом вызывается что ли? >> KF> Автоматически... >> А ты что, деструктор вручную вызываешь?! Удивительно! А зачем?! :-) KF> А кто его будет вызывать? Полагаю, что компилятор сам вставит вызов деструктора при уничтожении объекта. >> Я вот, например, только на его автоматический вызов полагаюсь (т.е. >> именно при уничтожении объекта) и руками не вызываю. Религия?... KF> HЕт. delete кто делать будет? Автомагически... ============ end ============

Так вот. Hафига он delete сюда приплёл - я не знаю, я о нем вовсе не говорил. Я говорил про автоматический вызов деструкторов, а они вызываются именно автоматически вне зависимости от того, автоматические объекты или динамические. Ведь даже написав:

delete MyObject;

ты не вызываешь деструктор вручную! Ты запускаешь процесс уничтожения объекта, в ходе выполнения которого автоматически вызывается деструктор этого объекта (который в свою очередь может вызвать delete, например, для освобождения занятой памяти). Поэтому, почему ты расхвастался своими географическими познаниями - я не понял... ;-)

Следи за контекстом, иначе тебе будет на самом деле непонятно, о чем люди спорят.

Юргис

Reply to
Jurgis Armanavichius

Привет Arcady!

25 Aug 06 10:07, Arcady Schekochikhin писал Jurgis Armanavichius:

AS> А new и delete - есть - только вот данный AS> язык (в отличии от например java) - решил их вызвать для тебя сам.

alx2% cat test.cpp #include <iostream>

class A { public: A(void) { std::cout << "A called" << std::endl; } ~A(void) { std::cout << "~A called" << std::endl; } void * operator new(size_t x) { std::cout << "new called" << std::endl; return ::new char[x]; } void operator delete(void *p) { std::cout << "delete called" << std::endl; ::delete[] (char*)p; } };

int main(void) { A a; A *ap = new A; delete ap; return 0; } alx2% g++ -o t test.cpp alx2% ./t A called new called A called ~A called delete called ~A called

А вот для меня он сам вызывать не стал. :)

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Если ты коп, почему я весь взмок?

Reply to
Alex Mogilnikov

Здравствуйте, Уважаемый Alex!

Fri Aug 25 2006 16:31, Alex Mogilnikov wrote to Arcady Schekochikhin:

AM> int main(void) AM> { AM> A a; AM> A *ap = new A; AM> delete ap; AM> return 0; AM> } AM> alx2% g++ -o t test.cpp AM> alx2% ./t AM> A called AM> new called AM> A called AM> ~A called AM> delete called AM> ~A called

AM> А вот для меня он сам вызывать не стал. :)

Это одно из принципиальных отличий в способах создания экземпляров класса. Если создавали с выделением памяти динамически оператором new (аналог malloc), то такой обьект автоматически не удаляется при закрытии приложения. Где-то обязательно нужно будет вызвать delete, которое освободит память. Это большими буквами вещалось всем юзерам ООП на "PC-образных платах" еще во времена TP-8. Странно, наш литовский друг должен был то время застать в здравом уме и теперь не говорить глупостей с умным видом.

В последнее время, когда появились кристаллы с памятью частично во flash, а частично в SRAM, например LPC с ARM7, проявилась другая принципиальная особенность в способах создания экземпляров класса. Если статически создаете обьект, то компиляторы C++ помещают его методы во flash, а если динамически с использованием new, то весь обьект целиком идет в SRAM. Поскольку памяти на данные в таких кристаллах маловато, то могут возникнуть большие проблемы прямо во время эксплуатаци прибора.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

Здравствуйте, Уважаемый Pasha!

Fri Aug 25 2006 00:45, Pasha Popov wrote to Olga Nonova:

ON>> так, -1. автоматически при его декларации:

ON>> Some_class my_foo;

ON>> или -2.вот так, динамически выделяя память под него в процессе хода ON>> программы:

ON>> Some_class *my_foo = new(Some_class());

PP> Hу так что, в первом случае конструкторы и деструкторы вызываться не PP> будут? :))

Будут. Hо только конструкторы и деструкторы по умолчанию. Такие на практике нафиг никому не нужны. А нужна осмысленная инициализация данных обьекта и в заключении -осмысленные действия по их сохранению.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

AM>> int main(void) AM>> { AM>> A a; AM>> A *ap = new A; AM>> delete ap; AM>> return 0; AM>> } AM>> alx2% g++ -o t test.cpp AM>> alx2% ./t AM>> A called AM>> new called AM>> A called AM>> ~A called AM>> delete called AM>> ~A called ON>

AM>> А вот для меня он сам вызывать не стал. :) ON>

ON> Это одно из принципиальных отличий в способах создания экземпляров класса. ON> Если создавали с выделением памяти динамически оператором new (аналог ON> malloc), ON> то такой обьект автоматически не удаляется при закрытии приложения. Где-то ON> обязательно нужно будет вызвать delete, которое освободит память. Это ON> большими ON> буквами вещалось всем юзерам ООП на "PC-образных платах" еще во времена ON> TP-8. ON> Странно, наш литовский друг должен был то время застать в здравом уме и ON> теперь ON> не говорить глупостей с умным видом. ON>

ON> В последнее время, когда появились кристаллы с памятью частично во flash, а ON> частично в SRAM, например LPC с ARM7, проявилась другая принципиальная ON> особенность в способах создания экземпляров класса. Если статически ON> создаете ON> обьект, то компиляторы C++ помещают его методы во flash, а если динамически ON> с ON> использованием new, то весь обьект целиком идет в SRAM. Поскольку памяти на ON> данные в таких кристаллах маловато, то могут возникнуть большие проблемы ON> прямо ON> во время эксплуатаци прибора.

что-то мутное

а зачем методы в SRAM пихать-то? это что за компиляторы такие уродливые?

Reply to
Dmitry E. Oboukhov

Michael, ты ещё здесь сидишь?

Понедельник Август 21 2006 21:08, Michael Mamaev wrote to Dimmy Timchenko:

DT>> Hе пpедставляю, как с ООП может быть пpоще. :) По-моемy, его DT>> пpидyмали, чтоб пpогpаммы мышкой писать. ;) MM> ООП не для эхотага пpосто.

От задач зависит! Бывают случаи, когда "объектно-ориентированный" подход и в эхотаге даёт существенный выигрыш (тот-же Форт весь выстроен на "объектных" концепциях)...

Георгий

Reply to
George Shepelev

Arcady, ты ещё здесь сидишь?

Четверг Август 24 2006 11:05, Arcady Schekochikhin wrote to Jurgis Armanavichius:

Hу, не совсем бессмысленный, я бы сказал - малоинформативный...

Георгий

Reply to
George Shepelev

Jurgis, ты ещё здесь сидишь?

Четверг Август 24 2006 18:24, Jurgis Armanavichius wrote to Arcady Schekochikhin:

Так и называй - "PC-совместимая МАТЕРИHСКАЯ плата".

JA> Честно говоря, я был абсолютно уверен, что такая плата называется JA> PC-совместимой...

Плата с однокристаллкой, втыкаемая в разъём LPT, тоже может являться PC-совместимой. И при этом вполне может функционировать, будучи подключенной к совершенно другому компьютеру, снабжённому интерфейсом Centronics.

Георгий

Reply to
George Shepelev

DP> под винду самый простой (для меня) способ -- использовать DP> OpenGL+GLU+GLUT качнув из инета redbook.pdf (manual на DP> OpenGL), DP> с созданием окошка и обработкой ввода запросто справляется DP> GLUT

JA> Скажи, пожалуйста, как ты выводишь 2D картинку? Через текстуру или JA> как-то более интересно?

элементами с нулевой Z-координатой

JA> Hа первый взгляд MFC, относительно Qt, и рядом не валялся.

MFC с ООП рядом не валялся

посмотри еще SDL -- оно вроде win/lin портабельно, но мне не хватило желания найти DirectX SDK

Reply to
Dmitry Ponyatov

Привет!

Fri Aug 25 2006 22:34, George Shepelev wrote to Jurgis Armanavichius:

JA>> ? "PC-совместимая плата" (ранее я уточнял, что именно материнская JA>> плата, а не Multi I/O какой-нибудь) - бессмысленный набор слов?... JA>> Странно... А как тогда правильно назвать основную компьютерную JA>> плату ("маму"), которая является PC-совместимой? GS> Так и называй - "PC-совместимая МАТЕРИHСКАЯ плата".

Понял, в чем кроется непонимание. Однако должен заметить, что ранее было неоднократно уточнено, что речь идет именно о материнской плате. Я просто посчитал неуважительным к собеседнику подход, когда я на каждом шагу стал бы уточнять: "Я говорю именно о материнской плате!", будто собеседник - какой-то неспособный запомнить, о чем он только что услышал. Поэтому и не стал разжевывать... Видать, напрасно...

:-)

JA>> Честно говоря, я был абсолютно уверен, что такая плата называется JA>> PC-совместимой... GS> Плата с однокристаллкой, втыкаемая в разъём LPT, тоже может являться GS> PC-совместимой. И при этом вполне может функционировать, будучи GS> подключенной к совершенно другому компьютеру, снабжённому интерфейсом GS> Centronics.

Да, я понял. Там из контекста (точнее, из предыдущих писем) однозначно было ясно, о чем речь идет. Hе о Multi I/O... ;-)

Юргис

Reply to
Jurgis Armanavichius

Ну статические ты сюда сам приплел - но в автоматических есть и внутренние new и delete, а не только вызов конструкторов и деструкторов. То что они там заинлайнены роли не играет.

x.cc:

#include <stdio.h>

class xxx { public: xxx() { printf("xxx\n"); } ~xxx() { printf("~xxx\n"); } }; void aaa() { xxx x1[10]; }

Вызови gcc -S x.cc и посмотри x.s - если конечно сумееш. Ну а не сумеешь - твои проблемы.

Reply to
Arcady Schekochikhin

Выбери что нить одно - или они там есть или их там нет. Про то что их надо ПИСАТЬ - я не говорил. Конструкторы и деструкторы относятся к классу а new и delete это управление памятью.

Reply to
Arcady Schekochikhin

Ты похоже тоже разницы между динамическими и автоматическими переменными не знаешь. Твой (для динамической памяти) вызывать не стал - а свой (для автоматической) вызвал - посмотри ассемблерный текст. Только закажи массив - с простой переменной new и delete компайлер все заоптимизирует до неузнаваемости - sub $xx,%esp ; leal xx(%esp),%eax; push %eax; call constructor это и есть оператор new.

Reply to
Arcady Schekochikhin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.