nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 15 Dec 2017 15:52



Reply to topic  [ 96 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7
Программная модель Intel 8080/КР580ВМ80А 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15909
Location: Colorado
Reply with quote
Lavr wrote:
Shaos wrote:
делай структурки (или классы) и динамически создавай экземпляры объекта
у меня вот так было сделано (линк с первой страницы топика):
http://nedopc.cvs.sourceforge.net/viewv ... iew=markup

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

Code:
class BlahBlah
{
  int internal_var;
public:
  int A,B,C;
  BlahBlah(){A=B=C=0;}
};

и где-то по ходу пьесы:

BlahBlah* blah = new BlahBlah();
...
int R = blah->A + blah->B;
...
delete blah;

или как локальную переменную объект создавать:

BlahBlah blah;
...
int R = blah.A + blah.B;

это C++, а если надо на голом C, то так:
Code:
typedef struct _BlahBlah
{
 int internal_var;
 int A,B,C;
} BlahBlah;

void init_BlahBlah(BlahBlah *this)
{
  this->A = this->B = this->C = 0;
}

и далее где-то в недрах твоей программы:

BlahBlah* blah = (BlahBlah*)malloc(sizeof(BlahBlah));
if(blah!=NULL) init_BlahBlah(blah);
...
int R = blah->A + blah->B;
...
free(blah);

как локальную переменную на C тоже можно:

BlahBlah blah;
init_BlahBlah(&blah);
...
int R = blah.A + blah.B;

_________________
:eugeek: https://twitter.com/Shaos1973


13 Feb 2016 11:36
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Спасибо! Похоже я чисто по старой памяти и по аналогии сделал всё же правильно.
По крайней мере два экземпляра троичного счетчика на одной dll-ке работают нормально... :kruto:

Меня просто aav8 немного спугнул...
aav8 wrote:
Некоторые особенности и мысли по поводу модели x80:
В проекте можно использовать только один проц.

_________________
iLavr


13 Feb 2016 11:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos, и если тебе не трудно, расскажи из собственного опыта, как C или С++ проект грамотно разграничивается на отдельные файлы?

Я вот тут расписывал чужой проект, разбитый на отдельные файлы, и вроде идеология какая-то просматривалась.
Но потом встретил пару чужих проектов, где всё это было свалено в одну кучу, и что-то смысл разбиения потерялся... :osad:
И проект, разбитый на файлы, и проект, где один .cpp и один .h компилятся в общем-то нормально.

В чем там основная идея, когда разбивают проект на отдельные файлы? И важна ли какая-то последовательность?

_________________
iLavr


13 Feb 2016 23:01
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 15909
Location: Colorado
Reply with quote
Основная идея чтобы не собирать всё каждый раз когда надо перекомпилировать весь проект - если куча маленьких файлов, то пересобираться будет только то, что изменилось (если через среду разработки собирать или через MAKE) - существенно быстрее будет. Сопутствующая идея - если над проектом работают несколько людей народу, то логичнее, чтобы каждый ковырял свой файл, не наступаю друг-другу на пятки. Ну и в случае стягивания за уши разных вещей - типа сторонние либы и.т.д. оно как бы само напрашивается чтобы было в разных файлах. Для сей как правило тела функций сидят в c-файлах, а объявления функций (а также макросы, объявления типов и структур) в h-файлах (для C++ это cpp и h).

_________________
:eugeek: https://twitter.com/Shaos1973


13 Feb 2016 23:21
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Post Re:
Shaos wrote:
делай структурки (или классы) и динамически создавай экземпляры объекта
у меня вот так было сделано
Code:
class BlahBlah
{
  int internal_var;
public:
  int A,B,C;
  BlahBlah(){A=B=C=0;}
};

и где-то по ходу пьесы:

BlahBlah* blah = new BlahBlah();
...
int R = blah->A + blah->B;
...
delete blah;

или как локальную переменную объект создавать:

BlahBlah blah;
...
int R = blah.A + blah.B;

Shaos, а что бы почитать на эту тему, чтобы мне самому было более понятно, что делаю?
Что-нибуть не очень заумное...

Или хотя бы на какую тему погуглить, а то я часа три потратил - ничего подходящего не попалось.


P.S. Вот, к примеру, вот здесь - по делу, или не по делу написано? http://purecodecpp.com/archives/2286
В комментах к этому материалу его раскритиковали и обхрюкали... :-?

_________________
iLavr


25 Oct 2017 16:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
В общем, как мне кажется, кратко и понятно написано здесь:
http://www.c-cpp.ru/books/operatory-u

Более развернуто изложено вот здесь:
http://www.forum.crossplatform.ru/index.php?showtopic=2555
Здесь рекомендована популярная литература.

Если её читать некогда, то можно "поумнеть" здесь: 8)
http://math.msu.su/~vvb/2course/Borisenko/Lect01.html
http://itedu.ru/courses/cpp/oop-in-cpp
http://mycpp.ru/cpp/book/c13.html

Г.Остер wrote:
Чтоб дело мастера боялось, он знает много страшных слов! :wink:
Поскольку времени немного, я вкратце матом объясню...

_________________
iLavr


30 Oct 2017 16:16
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 96 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.