Otlet kellene - C macro
Miko Imre
imre.miko at siemens.com
Fri Jun 25 14:03:09 CEST 2004
Hello mindenki, de legfokeppen Arnold,
Marciusban kerestel megoldast, hogy a IAR C-ben hogyan tudnad
a formatumstingeket a flash-be tenni. Akkor erre a legjobb megoldasnak
Tantos Andras javaslata tunt. Most keztem el ismerkedi az IAR-ral, es
feltunt, hogy lehetoseg van az altalad hianyolt valtozo hosszusagu
argumetumlistat hasznalni macro-ban (3.1c compiler-nel biztosan):
Compiler Reference Guide 202. oldal Variadic macros
Ezzel mar megoldhato a myprintf_P kenyelmes modon:
================================================
#include <pgmspace.h>
#define mysprintf_P(vardest, formatstr, ...) \
{__flash static const char __formatstr[]=formatstr; \
sprintf_P(vardest, __formatstr, __VA_ARGS__);}
__C_task void main (void)
{
int a, b;
char buffer[100];
a = 10;
b = 20;
mysprintf_P(buffer, "Hello Arnold <%d>, <%d>", a, b);
}
================================================
Ha kozben te is megtalaltad, akkor jo lesz a tobbieknek ;-)
Udv,
Imre
Füzesi Arnold wrote:
> Tantos Andras megmondta a megoldast, nem a legelegansabb
> (szerinte se, nem ot akarom fikazni), de muxik. Ez nekem most tobb mint
> eleg. Legkozelebb a feladatnak megfelelo hw-re fogok fejleszteni. Ennyi a
> tanulsag.
>
> Ime a megoldas:
> #define mysprintf_P(printf_params,formatstr) { \
> __flash static const char __s[]=formatstr; \
> sprintf_P printf_params; \
> }
>
> mysprintf_P((menuitems[0].mstring,__s,d_main.tmp,d_main.hum),"hõm:%4.1f°C
> pára:%3u@");
>
More information about the Elektro
mailing list