Re: C: kontrola vstupní hodnoty do procedury preprocesorem.

Josef Štengl ok1ced na nagano.cz
Úterý Červenec 10 09:43:21 CEST 2018


Bohužel, řešení, které máte na mysli pro knihovnu neexistuje.

Proč:
Preprocesor je zpracováván ve fázi překladu a nezná hodnoty parametrů, které vstupují do funkce v průběhu běhu. Zejména, 
když je kód fce přeložen bez znalosti hodnot (soudím, dle toho, že je to knihovna, takže ani makra nepomohou, protože 
nebudou v době překladu známa).

Nutno to řešit uvnitř funkce. Možná řešení:

Pokud je to pro PC (tudíž může to vypisovat chyby na terminál) tak se to většinou řeší pomocí ASSERT makra, nebo cokoliv 
jiného vhodného. Ale stejně záhodno ošetřit, když vstupní hodnoty jsou mimo povolený rozsah.

Nebo návratovou hodnotou funkce, když budou hodnoty špatně, tak vrátí funkce chybu. Tohle řešení je „výhodnější“ v tom, že 
pro dostatečně vysokou optimalizaci a ignorování návratové hodnoty funkce může kompilátor kód pro testování vyhodit a 
ušetřit čas.



On 9.7.2018 11:41, Miroslav Draxal wrote:
> Zdravím vespolek,
> 
> Lze nějakým šikovným zápisem kontrolovat vstupní hodnotu procedury preprocesorem? Nic mě nějak nenapadá.
> 
> #define AA 5
> 
> #define BB 10
> 
> UdelejNeco (A+10+B);
> 
> Zkontrolovat preprocesorem, aby hodnota řekněme nebyla větší než 200.
> 
> Díky za pomoc, 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