sprintf
Pavel Hudecek
edizon na seznam.cz
Čtvrtek Listopad 3 18:00:04 CET 2016
Třeba takový CodeVision má v nastavení projektu několik možností
implementace (s)printf. Zároveň jsem to v AVR až na výjimky nepoužíval a
radši jsem měl svoje vlastní fn pro odeslání uint32, nebo float na sériák.
Výsledný kód byl kratší a měl jsem nad tím plnou kontrolu.
Na druhou stranu, při používání AM3358 s nevím kolika mega, nebo možná giga
DDR jsem tyto starosti neměl a na používání (s)printf jsem si zvykl:-)
Teď tu mám LPC s něco přes 32 kB RAM, což je tak 16-128x víc než v AVR, ale
místo max. 1 řádku textu pro log pracuji s odstavci přes půl grafického
displeje a tak je možné, že stringy budou mít i dost přes 1 kB. Tak si s tím
trochu začínám dělat starosti.
Thready tam nejsou, ale když už o nich byla řeč, tak jsem chtěl mít jasno.
PH
-----Původní zpráva-----
From: Jan Waclawek
Nebezpecnost je v tom moznom preteceni.
Nevhodnost pre mcu je v pomerne rozsiahlych prostriedkoch ktore
implementacia *printf plne zodpovedajucej standardu prinasa. Existuju
nestandardne verzie *printf specialne optimalizovane pre mcu, ktore
vynechavaju niektore (az mnohe) featury standardneho *printf (napr.
sdcc.sourceforge.net/doc/sdccman.pdf kap. 3.15.2.1). V mnohych pripadoch
je este lepsie si napisat svoje specializovane rutiny.
>4. Co je za problém s sprintf a thready? Týká se to i printf (kromě
>očekávatelného problému, ľe by se mohl pohádat o výstupní zařízení s jiným
>threadem)?
To sa netyka len sprintf. C99, 7.1.4#4:
The functions in the standard library are not guaranteed to be reentrant
and may modify
objects with static storage duration.
Další informace o konferenci Hw-list