C: #define, XC8
Miroslav Šinko
sinkomiro na gmail.com
Pátek Červen 15 01:10:36 CEST 2018
Moze ostat aj pri makre, s vysledkom zrejme rovnakym, ako pri inline
funkcii.
#define delay_ms(DelayTime) \
if(DelayTime < 256)\
delay_ms_uint8_t(DelayTime); \
else \
delay_ms_uint16_t(DelayTime);
Pre pokoj v dusi by som to este poriadne ozatvorkoval zlozenymi
zatvorkami :)
Pri pohlade na povodne makro ma ako prve napadlo: Prosim, jak muze
preprocesor vedet, ze DelayTime je < alebo >= ako 256? :-D
miro
On 14.6.2018 21:13, Jan Waclawek wrote:
> Nie:
> 1. ak to mate napisane tak, ako vidime, t.j. medzi jednotlivymi riadkami je
> prazdny riadok, tak tie spatne lomitka su neucinne - tie "zozeru" vzdy len
> jedno zariadkovanie
> 2. ak tam tie prazdne riadky nemate, tak v 2. faze prekladu (C99 5.1.1.2)
> sa vyhadzu spatne lomitka na konci riadkov a pripoja sa k nim riadky za
> nimi nasledujuce. Ale to znamena, ze vo faze 4, ked sa maju vykonavat tie
> preprocesorove direktivy, tak to #if uz nie je preprocesorova direktiva,
> lebo nie je na zaciatku riadku (6.10#2)
>
> Ale nerobte si vrasky, napiste pokojne funkciu s tymto istym obsahom,
> oznacte static inline, a kazdy slusny (a polovica tych neslusnych)
> prekladac urobi to co chcete.
>
> Ledazeby ste mali vypnutu optimalizaciu, co je blbost.
>
> wek
>
>
> ----- Original Message ---------------
>
> Subject: C: #define, XC8
> From: "Miroslav Draxal"<evik na volny.cz>
> Date: Thu, 14 Jun 2018 19:51:24 +0200
> To: "'HW-news'"<hw-list na list.hw.cz>
>
> Dobrý den,
>
> Existuje nìjaká mo¾nost, rozchodit následující?
>
>
>
> void delay_ms_uint16_t(uint16_t DelayTime);
>
> void delay_ms_uint8_t(uint8_t DelayTime);
>
>
>
> # define delay_ms(DelayTime) \
>
> #if DelayTime< 256 \
>
> delay_ms_uint8_t(DelayTime) \
>
> #else \
>
> delay_ms_uint16_t(DelayTime) \
>
> #endif
>
>
>
> Ztrozkotá to na "illegal "#" directive"
>
> Díky za nápady.
>
> Míra
>
>
> _______________________________________________
> 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