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