optymalizacja...no cóż
u Ciebie w oryginalnym makefile było -O3 to ja wstawiłam to samo,
aby warunki kompilacji były podobne...
ja nie mam z optymalizacją jakichś wielkich doświadczeń, z reguły wyłączam.
aha, no może trochę off-topic, ale to extern typedef struct mi nie daje spokoju...
szkoda mi trochę tę pisaninę teraz do kosza wyrzucać więc:
struct - słowo kluczowe, służace do budowania bardziej skomplikowanych
bloków danych - struktur, zawierających składniki różnych typów...
zapis:
Kod: Zaznacz cały
struct TStruktura {
char a;
char b;
} zmienna, inna_zmienna, i_jeszcze_inna;
utworzy trzy zmienne strukturalne: zmienna, inna...,i_jeszcze...
każda z nich będzie miała dwa składniki a, b
przy okazji nowy typ danej dostanie nazwę TStruktura.
zmienne 'są gotowe do użycia' - ich instancje fizycznie istnieją...
możemy też utworzyć (zdefiniować) zmienną typu TStruktura,
specyfikacja C wymaga wtenczas zapisu:
struktury mogą też nie posiadać nazwy typu...przykładowo:
Kod: Zaznacz cały
struct {
char aa;
char bb;
} nienazwana, druga_nienazwana;
powyżej zdefiniowane dwie zmienne strukturalne, posiadające po dwa pola aa,bb
teraz typedef....
dłuży do deklarowania nowych typów danych,
ewentualnie nazywania po swojemu aktualnie istniejących...
składnia:
typedef bardzo_skomplikowana_deklaracja nazwa_typu
np.:
możemy teraz tworzyć zmienne typu BAJT...ot, po prostu:
popatrzmy teraz na taki zapis:
Kod: Zaznacz cały
typedef struct _tag_paczka_ {
char q;
char a;
char z;
} TPaczka;
ale może w ten sposób:
typedef struct _tag_paczka_ {char q; char a; char z; } TPaczka;
co należy do struct-a, a co do typedef-a...?
w ten sposób zadeklarowaliśmy nowy typ danych, o nazwie TPaczka, będący strukturą
o budowie jak na zielono...
korzystać z tego typu możemy dwojako:
dzięki użyciu typedef - zwyczajnie i intuicyjnie:
Kod: Zaznacz cały
TPaczka pierwsza_paczka;
pierwsza_paczka.a = 11;
dzięki identyfikatorowi _tag_paczka_ po słowie kluczowym struct, także i tak:
Kod: Zaznacz cały
struct _tag_paczka_ druga_paczka;
druga_paczka.z = 22;
czyli jak w klasycznym C
mam nadzieję, że to jakieś zrozumiałe wyszło..
w załączniku spakowany plik test.c - kompiluje się go wołając z konsoli 'avr-gcc test.c'
tasza