C: #define, XC8

Miroslav Draxal evik na volny.cz
Pátek Červen 15 16:10:31 CEST 2018


Můžeme to trochu rozvést? 
Mám dvě funkce, které provádějí totéž, jedna ovšem s uint8_t a druhá s uint16_t.
Čili
void xx1(uint8_t);
void xx2(uint16_t);
Chtěl jsem, aby preprocesor si podle hodnoty při volání funkce sám rozhodl, kterou funkci použije.

Jak jste to myslel s tím static inline?
Musím se přiznat, že o tom inline jsem slyšel poprvé. Ale co jsem se o tom přečetl v pdf k XC8, tak podle mě to můj problém neřeší.
Míra

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Thursday, June 14, 2018 9:14 PM
To: HW-news
Subject: Re: C: #define, XC8

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