C: #define, XC8

Miroslav Draxal evik na volny.cz
Pátek Červen 15 22:14:00 CEST 2018


Nechytejte prosím za slovo, totiž psané slovo, jde o to, jestli se dá nebo nedá nějak zapsat přetížená funkce v C:
Míra

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Petr Labaj
Sent: Friday, June 15, 2018 6:54 PM
To: hw-list na list.hw.cz
Subject: Re: C: #define, XC8

Pár bytu v programu neušetříte. Naopak Vám jich pár přibude, protože
budete mít 2 verze nějaké funkce delay.

PL

********************

Dne 15.6.2018 v 18:38 Miroslav Draxal napsal(a):
> Já vím, jakou hodnotu bude mít parametr. Nejedná se o jeden projekt, ale o mou obecnou knihovnu, kterou používají 10Fxx,12Fxx,18Fxx.
>
> Konkrétně mi jde o funkci delay_ms. Podle názvu je jasné o co jde. XC8 má makro __delay_ms. Pokud mám v programu např. 10x delay_ms, pokaždé s jinou délkou čekání v ms, potom mi to pokaždé přeloží na správnou délku čekání, ale optimalizace jde docela do kopru, protože si to pokaždé vytvoří kód pro konkrétní délku čekání. No a proto (hlavně u 10f) používám
>
> void delay_ms_uint8_t(uint8_t DelayTime) {
>      do {
>          __delay_ms(1);
>      } while (--DelayTime);
> }
>
> A
>   void delay_ms(uint16_t DelayTime) {
>      do {
>          __delay_ms(1);
>      } while (--DelayTime);
> }
>
> Chtěl jsem, aby si preprocesor vybral sám, tu funkci, kterou potřebuje.
> A jak to tak vypadá, možná se naučím i něco nového. )viz inline
>
> Prosím, nepiště, že ušetřím jeden byt z uint8_t a pár bytu v programu. To je irelevantní.
> Míra
>
>
> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Petr Labaj
> Sent: Friday, June 15, 2018 5:53 PM
> To: hw-list na list.hw.cz
> Subject: Re: C: #define, XC8
>
> Vy při programování víte, jakou hodnotu bude mít parametr?
> Pokud ano, tak přece může sám zavolat tu správnou funkci (makro).
> Pokud ne, tak jak to ve fázi překladu může vědět kompilátor?
>
> PL
>
> ************************
>
> Dne 15.6.2018 v 16:10 Miroslav Draxal napsal(a):
>> 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.
>>

_______________________________________________
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