Arduino - platnost #define

Miroslav Mraz mrazik na volny.cz
Středa Květen 6 21:52:55 CEST 2020


1. Úroveň - naučit se jak fungují #define
2. Úroveň - vůbec je nepoužívat.

C++ je dobré rozšíření původního jazyka C, nakonec Arduino je na tom 
založeno. Je asi dobré pochopit alespoň základy, pomáhá podívat se i 
jiné jazyky. Mě například rust naučil deklarovat vše, co je jen trochu 
možné jako const. Když to začnete dělat důsledně, zjistíte, že toho co 
zůstane nekonstantní je docela málo. Předejdete tak nečekaným chybám 
(ukazatel najednou ukazuje jinam) a usnadníte práci překladači, což může 
i trochu zkrátit kód.

Mrazík

Dne 06. 05. 20 v 21:16 Jan Waclawek napsal(a):
> [preposielam]
> 
> Ahojte,
> 
> po precitani si doteraz vsetkych prispevkov vo vlakne si myslim, ze
> pani programatori Waclawek, Zuffa a p.Mraz napisali k teme snad uz
> uplne vsetko, ale napriek tomu vsetkemu by som si dovolil este pridat
> dve poznamky, ktore mne osobne velmi pomohli v praxi pochopit tento
> problem s platnostou #define.
> 
> Najprv by som rad chcel zareagovat na tuto pasaz:
> 
> ...pouzit puvodni M5stack knihovny...
> 
> Tuna je dolezite si uvedomit to slovicko "knihovny". Zvycajne su to
> subory s priponou .lib a su to vacsinou binarne object file s
> predkompilovanymi rutinami, ktore maju svoj specificky format kvoli
> rychlemu linkovaniu do vysledneho kodu. Tieto rutiny maju svoje
> nazvy-adresy a svoje parametre. Na to, aby ste ich mohol pouzivat v .c
> suboroch potrebujete nejako povedat prekladacu ich formalny nazov a
> jednotlive parametre rutin. Na toto sluzi .h file s prislusnymi
> #define konstanami pre jednotlive rutiny. Tieto #define platia len pre
> tuto konkretnu rutinu z .lib file. Kedze nemate ale .c zdrojaky od
> jednotlivych rutin v .lib subore neviete zmodifikovat prislusnu
> rutinu. Tato operacia totiz vyzaduje novu kompilaciu rutiny do object
> filu a nasledne ulozenie do kniznice, teda .lib-suboru.
> 
> Druha poznamka teraz ku platnosti #define, sa tyka oblasti platnosti v
> .h a .c objektoch. Zamerne som pouzil slovicko "objekt" z objektoveho
> programovania napr. C++, pretoze tuna najlepsie vidiet ako vlastne
> cele to objektove programovanie vyzera na urovni asembleru (alebo
> cisteho c-cka), kde teda klucove slovicka public a extern jasne
> hovoria co sa da pouzivat v dalsich objektoch resp. programovych
> moduloch. Prislusne #define plati vzdy len v definovanom objekte, teda
> .c subore. Tieto jednotlive objekty (teda .c subory) potom mozete
> pouzit v main.c subore alebo objekte, ale zase musite ich
> naincludovat. Mne osobne tato objektova predstava na urovni asembleru
> velmi ulahcila predstavu a pochopenie direktiv #include a #define v
> c-cku. Ked som to nechapal z c-cka, tak som to pochopil na asembleri z
> c++.  :)))
> 
> A.
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 


Další informace o konferenci Hw-list