C: #define, XC8
Jan Waclawek
konfera na efton.sk
Čtvrtek Červen 14 21:13:56 CEST 2018
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 at volny.cz>
Date: Thu, 14 Jun 2018 19:51:24 +0200
To: "'HW-news'" <hw-list at 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
Další informace o konferenci Hw-list