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