AVR i C++

Witam! Biore sie powoli za pisanie biblioteki graficznej do AVR i pomyslalem, ze wykorzystanie obiektow i stworzenie czegos w stylu uproszczonego MFC byloby mile:) I tu sa problemy... AVR-gcc nie ma operatora new, z poszukiwan w necie dowiedzialem sie, ze ludzie zastepuja go przez malloc. Niby ok, ale to nie zadziala z obiektami majacymi metody wirtualne, bo nie inicjalizuje vtable instancji. Z kolei wykorzystanie takich metod w tym zastosowaniu wydaje sie byc oczywiste. Jak sobie z tym poradzic? Czy naprawde jedyna mozliwoscia jest sobie odpuscic? Pozdrawiam liczac, ze uslysze cos konstruktywnego:)

Reply to
T.M.F.
Loading thread data ...

Akurat RAMu mam sporo, zreszta programowanie obiektowe wcale nie musi pochlaniac duzych ilosci pamieci. Tworcy AVRGCC najwyrazniej o new mysla, bo pewne zapowiedzi wprowadzenia pojawiaja sie w dokumentacji.

Z definicji kazdy problem obiektowy da sie rozwiazac programujac strukturalnie. Ale po co sobie utrudniac i zaciemniac obraz. Wlasnie po to wybralem sobie ATMega128, dodalem duzo pamieci itd. zeby wlasnie skorzystac z dobrodziejstw programowania obiektowego.

Reply to
T.M.F.

Na avrfreaks poradzono mi cos takiego:

void * operator new(size_t size) { return malloc(size); }

void operator delete(void * ptr) { free(ptr); }

Czyli generalnie tak jak ty to robisz. Robiac object *o=new object(parametry) wydaje sie, ze konstruktor i co za tym idzie vtable jest wywolywany automatycznie. Goscie z avrfreaks to potwierdzaja:) Wiec wydaje sie, ze nic nie stoi na przeszkodzie, zeby tak robic. O jakich wywolaniach konstruktorow globalnych pisales? Nie rozumiem tego fragmentu. A BTW czym sie rozni malloc od pvPortMalloc?

Reply to
T.M.F.

Bo AVR-GCC to kompilator języka C, a nie C++. Nie wiem, jak ludzie moga to mylic, a to jest niestety nagminne :(.

BTW - jak bardzo chcesz, to w C masz funkcje malloc (stdlib.h).

Reply to
arkadiusz.antoniak

Bo AVR-GCC to kompilator języka C, a nie C++.

Reply to
arkadiusz.antoniak

Jesli poczytasz manuala to zapewne dojdziesz do momentu, gdzie opisuja jak avr-gcc na podstawie np. rozszerzenia pliku automatycznie sprawdza czy ma do czynienia z C, czy C++ i podejmuje stosowne akcje. Maly hint - avr-g++ tez nie ma tych operatorow.

A przeczytales mojego posta, czy tylko tak ci sie wydawalo?

Reply to
T.M.F.

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.