Re: C: kontrola vstupní hodnoty do procedury preprocesorem.
Josef Štengl
ok1ced na nagano.cz
Úterý Červenec 10 10:09:21 CEST 2018
C preprocesor není zlo, jen je někdy nepěkně zneužíván. C dovoluje i ... nesprávné zápisy (*) a je v některých případech
vyloženě nutný (například pokud je kód psaný pro více architektur. Bez preprocesoru by ty kódy musely být 2x. I hloupé
povolení/zakázaní přerušení pro dva procesory je bez preprocesoru neřešitelné). Také si málokdo uvědomuje, že i #warning
nemusí být přenositelný. Není v normě a některé překladače používají #warn a #warning neznají. Pomocí preprocesoru se to
dá obejít.
Mimochodem assert se nedá vždy použít (není jak jinak hlásit problémy než tím, že se to prostě přestane fungovat).
Statické konstantní proměnné v knihovně jako volitelný parametr? Nemám představu, jak to myslíte.
* někdy i dávají v daném kontextu smysl. Problém je, že někdo píše stylem, jé to se mě líbí to použiji bez toho aby měl
povědomí o tom, že řešení je platné jen pro omezenou skupinu problému a nelze je použít univerzálně.
On 9.7.2018 19:22, Ondrej wrote:
> Zdravím
>
>
> nemohlo by pár const statických "proměnných" a inline funkcí a assert udělat stejnou práci. A lépe. C preprocesor je zlo a
> jeho použití nedává u modernách překladačů většinou moc smysl.
>
>
> O.
>
>
> Dne 9.7.2018 v 11:41 Miroslav Draxal napsal(a):
>>
>> 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 bywww.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> 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