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